Android广播注册两者方式

2015-08-15 18:10 评论 0 条

1、动态注册,即在java代码中调用registerReceiver(BroadcastReceiver  receiver,IntentFilter fileter),如下:

  1. /** 
  2.   *重写onReceive方法 
  3.   */  
  4. public class SMSBroadcastReceiver extends BroadcastReceiver{  
  5.   
  6.           public void onReceive(Context context,Intent intent){  
  7.   
  8.           }  
  9. }  
  1. public class SMSActivity extends Activity{  
  2.        public void onCreate(Bundle savedInstanceState){  
  3.                    super.onCreate(savedInstanceState);  
  4.                    setContentView(R.layout.sms_main);  
  5.   
  6. //注册动态广播  
  7. IntentFilter filter=new IntentFilter();  
  8.                   filter.addAction("android.provider.telephony.SMS_RECEIVED");  
  9. SMSBroadcastReceiver  receiver=new SMSBroadcastReceiver();  
  10.                   registerReceiver(receiver,filter);  
  11.   
  12.        }  
  13. }  

2、静态注册,即在AndroidManifest.xml文件中注册,如下:

  1. <receiver>  
  2.   
  3. <intent-filter android:name=".SMSBroadcastReceiver">  
  4.   
  5. <action android:name="android.provider.telephony.SMS_RECEIVED"/>  
  6.   
  7. </intent-filter>  
  8.   
  9. </receiver>  

3、区别:

静态注册广播又叫:常驻型广播,广播不会随应用程序的关闭而停止,只要有广播信息,广播接收器都可以接收得到,它是直接在应用程序的AndroidManifest.xml文件中注册。

动态注册广播又叫:非常驻型广播,应用程序结束了,广播就停止,广播接收者将不会再收到广播信息,在一个Activity的onCreate、onResume中注册,需要在onPause或onDestroy中调用unregisterReceiver(SMSBroadcastReceiver receiver)取消注册,否则会报错。

当前文章价值3.06元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/332.html ,谢谢支持!

资源分享

Eclipse导入另一台电脑下的Android项目style文件出现错误的原因 Eclipse导入另一台电脑下的And
生活杂谈之万网域名注册过程详解 生活杂谈之万网域名注册过程详解
Cannot run program “git.exe”: createprocess error=2,系统找不到指定的文件 Cannot run program "git.exe":
python运行wordpress_xmlrpc python运行wordpress_xmlrpc