第二步:注冊BroadcastReceiver一旦實現了BroadcastReceiver,接下就應該指定該BroadcastReceiver能匹配的Intent即注冊BroadcastReceiver。注冊BroadcastReceiver的方式有兩種:(動態廣播的優先級比靜態要高)第一種是靜態注冊:這種方法是在配置AndroidManifest.xml配置文件中注冊,通過這種方式注冊的廣播為常駐型廣播,也就是說如果應用程序關閉了,有相應事件觸發程序還是會被系統自動調用運行。例如:<!-- 在配置文件中注冊BroadcastReceiver能夠匹配的Intent --><!--配置廣播接收者--><receiver android:name=".MyReceived01"><intent-filter><action android:name="com.example.smz.a0831_android_sender.955"></action></intent-filter></receiver>配置完了后,只要是com.example.smz.a0831_android_sender.955這個地址的廣播,MyReceived01都能接收到。(注:這里我寫兩個接收端,兩個接收端代碼都差不多,只需要改下命名即可)。第二種: 動態注冊:public classMainActivityextendsAppCompatActivity {PRivate MyReceived02 myReceived02;private IntentFilter intentFilter;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myReceived02 = new MyReceived02();intentFilter = new IntentFilter();intentFilter.addAction("com.example.smz.a0831_android_sender.955");}@Overrideprotected voidonResume() {super.onResume();//注冊廣播registerReceiver(myReceived02,intentFilter);}注意,registerReceiver是android.content.ContextWrapper類中的方法,Activity和Service都繼承了ContextWrapper,所以可以直接調用。在實際應用中,我們在Activity或Service中注冊了一個BroadcastReceiver,當這個Activity或Service被銷毀時如果沒有解除注冊,系統會報一個異常,提示我們是否忘記解除注冊了。所以,記得在特定的地方執行解除注冊操作://注銷@Overrideprotected voidonDestroy() {super.onDestroy();unregisterReceiver(myReceived02);}黏性廣播:它分為有序黏性和無序黏性,它只需要在發送端寫如下代碼//發送黏性廣播sendStickyBroadcast(intent);就好了。然后在添加一個黏性個廣播的權限即可<!--添加發送黏性廣播權限--><uses-permissionandroid:name="android.permission.BROADCAST_STICKY"></uses-permission>
新聞熱點
疑難解答