第二步:注册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>
新闻热点
疑难解答