Android廣播(BroacastReceiver)與服務(Service)
阿新 • • 發佈:2018-05-10
com 還要 activit pro service 動態註冊 let onclick nds
BroadcastReceiver可以理解成是一種組件,是默默的在改後臺運行的,用於在不同軟件和不同組件之間的傳遞,無法被用戶感知,因為他在系統的內部工作,BroadcastReceiver被稱為廣播。
一、廣播的註冊有兩種方式:
1、動態註冊,使用Java代碼進行註冊
2、靜態註冊,需要在AndroidMainfest進行註冊
二、我們先來講解下如何靜態註冊:
1、我們先來創建一個繼承BroadcastReceiver的類,實現onReceive方法,為了更好的體驗,我們在這個方法裏面彈一個吐司
onReceive在接受到廣播後會觸發
1 publicclass MsgService extends BroadcastReceiver { 2 3 private String ACTION_SGC = "android.intent.action.BOOT_COMPleTED"; 4 5 @Override 6 public void onReceive(Context context, Intent intent) { 7 if(ACTION_SGC.equals(intent.getAction())){ 8 Toast.makeText(context,"靜態廣播",Toast.LENGTH_SHORT).show();9 } 10 } 11 }
2、這是需要在AndroidMainfest中進行註冊
1 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 2 3 <application 4 android:allowBackup="true" 5 android:icon="@mipmap/ic_launcher" 6 android:label="@string/app_name" 7 android:roundIcon="@mipmap/ic_launcher_round" 8 android:supportsRtl="true" 9 android:theme="@style/AppTheme"> 10 <activity android:name=".MainActivity"> 11 <intent-filter> 12 <action android:name="android.intent.action.MAIN" /> 13 14 <category android:name="android.intent.category.LAUNCHER" /> 15 </intent-filter> 16 </activity> 17 <receiver android:name=".MsgService"> 18 <intent-filter> 19 <action android:name="android.intent.action.BOOT_COMPleTED"></action> 20 </intent-filter> 21 </receiver> 22 </application>
註冊的代碼是在17行到20行,別忘了還要寫上權限,權限就是第一個行的權限
3、如何使用廣播
1 public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 init(); 8 } 9 10 private void init() { 11 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 12 @Override 13 public void onClick(View v) { 14 //這裏的意圖必須使用和其他一樣的意圖android.intent.action.BOOT_COMPleTED 如果使用的不一樣,將會出現錯誤 15 sendBroadcast(new Intent("android.intent.action.BOOT_COMPleTED")); 16 } 17 }); 18 } 19 }
Android廣播(BroacastReceiver)與服務(Service)