时间:2021-05-21
Android:BroadcastReceiver注册的方式分为两种:
静态注册
动态注册
1. 静态注册
在AndroidManifest.xml里通过标签声明
属性说明:
<receiver android:enabled=["true" | "false"]//此broadcastReceiver能否接收其他App的发出的广播//默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource"//继承BroadcastReceiver子类的类名 android:name=".mBroadcastReceiver"//具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收; android:permission="string"//BroadcastReceiver运行所处的进程//默认为app的进程,可以指定独立的进程//注:Android四大基本组件都可以通过此属性指定自己的独立进程 android:process="string" >//用于指定此广播接收器将接收的广播类型//本示例中给出的是用于接收网络状态改变时发出的广播 <intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter></receiver>注册示例
<receiver //此广播接收者类是mBroadcastReceiver android:name=".mBroadcastReceiver" > //用于接收网络状态改变时发出的广播 <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter></receiver>当此App首次启动时,系统会自动实例化mBroadcastReceiver类,并注册到系统中。
2. 动态注册
在代码中通过调用Context的registerReceiver()方法进行动态注册BroadcastReceiver,具体代码如下:
@Override protected void onResume(){ super.onResume(); //实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); //设置接收广播的类型 intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE); //调用Context的registerReceiver()方法进行动态注册 registerReceiver(mBroadcastReceiver, intentFilter); }//注册广播后,要在相应位置记得销毁广播//即在onPause() 中unregisterReceiver(mBroadcastReceiver)//当此Activity实例化时,会动态将MyBroadcastReceiver注册到系统中//当此Activity销毁时,动态注册的MyBroadcastReceiver将不再接收到相应的广播。 @Override protected void onPause() { super.onPause(); //销毁在onResume()方法中的广播 unregisterReceiver(mBroadcastReceiver); }}3. 两种注册方式的区别
4. 特别注意
动态广播最好在Activity的onResume()注册、onPause()注销。
原因:
1.对于动态广播,有注册就必然得有注销,否则会导致内存泄露
重复注册、重复注销也不允许
2.Activity生命周期如下:
Activity生命周期的方法是成对出现的:
- onCreate() & onDestory()
- onStart() & onStop()
- onResume() & onPause()
在onResume()注册、onPause()注销是因为onPause()在App死亡前一定会被执行,从而保证广播在App死亡前一定会被注销,从而防止内存泄露。
1.不在onCreate() & onDestory() 或 onStart() & onStop()注册、注销是因为:感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android开机自启动是通过BroadcastReceiver注册开机广播来实现的Android接收开机广播,需要用到播广播接收者BroadcastRecei
Android中的广播用的太多了,今天稍微总结一下。按注册方式分为两种:1.静态注册广播:静态注册广播就是在androidManifest.xml文件中注册广播
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。BroadcastReceiver也就是“广播接收者”的意思,顾
BroadcastReceiver也就是“广播接收者”的意思,它是用来接收来自系统和应用中的广播。在Android中,Broadcast是一种广泛运用的在应用程
一、广播发送者&广播接收者介绍1.广播接收者广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写:publ