BroadcastReceiver的两种注册方式和使用
BroadcastReceiver是android中的一个非常重要的组件,常用于接收广播信息。广播的注册使用有两种方式:
静态注册(在 AndroidManifest.xml 中 )
- <receiver android:name=".BroadcastReceiverDemo" >
- <intent-filter>
- <action android:name="com.simware.BroadcastReceiverDemo" >
- </action>
- </intent-filter>
- </receiver>
创建一个BroadcastReceiver
- public class BroadcastReceiverDemo extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- String msg = intent.getStringExtra("message");
- Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
- }
- }
在onReceive方法内,可以获取随广播而来的Intent中的数据,这非常重要,就像无线电一样,包含很多有用的信息。在创建完我们的BroadcastReceiver之后,还不能够使它进入工作状态,我们需要为它注册一个指定的广播地址。没有注册广播地址的BroadcastReceiver就像一个缺少选台按钮的收音机,虽然功能俱备,但也无法收到电台的信号。在Manifest.xml文件中已经注册了BroadcastReceiver的广播地址。
- <span style="font-size:18px;"> </span><span style="font-size:18px;">Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo");
- mIntent.putExtra("message", showText.getText().toString());
- sendBroadcast(mIntent);</span>
在Activity发送广播,就触发了广播事件。
动态注册(在代码中注册)
registerReceiver(BroadcastReceiver receiver, IntentFilterfilter)
第一个参数是我们要处理广播的BroadcastReceiver (广播接收者,可以是系统的,也可以是自定义的);第二个参数是意图过滤器。
总结:在 Activity 中代码注册广播建议在: onResume() 中注册(也可在onCreate里面注册);在 Activity 中代码注销广播建议在: onPuase() 中注销(也可在onDestory里面注销)unregisterReceiver(mBatteryInfoReceiver) 。