albertbanda的专栏

欢迎各位在这里和我讨论软件技术问题

BroadcastReceiver的两种注册方式和使用

BroadcastReceiver的两种注册方式和使用

原创 2013年02月20日 18:24:38
  • 20562

BroadcastReceiver是android中的一个非常重要的组件,常用于接收广播信息。广播的注册使用有两种方式:

静态注册(在 AndroidManifest.xml 中 )

[html] view plain copy
  1. <receiver android:name=".BroadcastReceiverDemo" >  
  2.             <intent-filter>  
  3.                 <action android:name="com.simware.BroadcastReceiverDemo" >  
  4.                 </action>  
  5.             </intent-filter>  
  6. </receiver>  

 

创建一个BroadcastReceiver

[java] view plain copy
  1. public class BroadcastReceiverDemo extends BroadcastReceiver {  
  2.   
  3.     @Override  
  4.     public void onReceive(Context context, Intent intent) {  
  5.         // TODO Auto-generated method stub  
  6.         String msg = intent.getStringExtra("message");  
  7.         Toast.makeText(context, msg, Toast.LENGTH_LONG).show();  
  8.   
  9.     }  
  10.   
  11. }  

在onReceive方法内,可以获取随广播而来的Intent中的数据,这非常重要,就像无线电一样,包含很多有用的信息。在创建完我们的BroadcastReceiver之后,还不能够使它进入工作状态,我们需要为它注册一个指定的广播地址。没有注册广播地址的BroadcastReceiver就像一个缺少选台按钮的收音机,虽然功能俱备,但也无法收到电台的信号。在Manifest.xml文件中已经注册了BroadcastReceiver的广播地址。

[java] view plain copy
  1. <span style="font-size:18px;">      </span><span style="font-size:18px;">Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo");  
  2.                 mIntent.putExtra("message", showText.getText().toString());  
  3.                 sendBroadcast(mIntent);</span>  


在Activity发送广播,就触发了广播事件。

 

 动态注册(在代码中注册)

registerReceiver(BroadcastReceiver receiver, IntentFilterfilter) 

第一个参数是我们要处理广播的BroadcastReceiver (广播接收者,可以是系统的,也可以是自定义的);第二个参数是意图过滤器。

总结:在 Activity 中代码注册广播建议在: onResume() 中注册(也可在onCreate里面注册);在 Activity 中代码注销广播建议在: onPuase() 中注销(也可在onDestory里面注销)unregisterReceiver(mBatteryInfoReceiver) 。


示例代码下载地址


阅读更多
个人分类: 八方来文
上一篇WCF:如何将net.tcp协议寄宿到IIS
想对作者说点什么? 我来说一句

BroadcastReceiver

2017年08月06日 23.8MB 下载

没有更多推荐了,返回首页

关闭
关闭