1、动态注册,即在java代码中调用registerReceiver(BroadcastReceiver receiver,IntentFilter fileter),如下:
- /**
- *重写onReceive方法
- */
- public class SMSBroadcastReceiver extends BroadcastReceiver{
- public void onReceive(Context context,Intent intent){
- }
- }
- public class SMSActivity extends Activity{
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.sms_main);
- //注册动态广播
- IntentFilter filter=new IntentFilter();
- filter.addAction("android.provider.telephony.SMS_RECEIVED");
- SMSBroadcastReceiver receiver=new SMSBroadcastReceiver();
- registerReceiver(receiver,filter);
- }
- }
2、静态注册,即在AndroidManifest.xml文件中注册,如下:
- <receiver>
- <intent-filter android:name=".SMSBroadcastReceiver">
- <action android:name="android.provider.telephony.SMS_RECEIVED"/>
- </intent-filter>
- </receiver>
3、区别:
静态注册广播又叫:常驻型广播,广播不会随应用程序的关闭而停止,只要有广播信息,广播接收器都可以接收得到,它是直接在应用程序的AndroidManifest.xml文件中注册。
动态注册广播又叫:非常驻型广播,应用程序结束了,广播就停止,广播接收者将不会再收到广播信息,在一个Activity的onCreate、onResume中注册,需要在onPause或onDestroy中调用unregisterReceiver(SMSBroadcastReceiver receiver)取消注册,否则会报错。
你可能感兴趣的文章
来源:TeachCourse,
每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/332.html ,谢谢支持!
转载请注明出处: https://www.teachcourse.cn/332.html ,谢谢支持!