BroadCast两种实现方式
1.静态注册(系统广播):
- 实现广播接收类,继承BroadcastReceiver
- 注册广播,在mainfreast.xml里面添加<receiver></receiver>如下:
<!-- 接收手机第一次启动广播 --> <receiver android:name=".broadcast.BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
2.动态注册(自定义广播):
- 实现广播接收类,继承BroadcastReceiver,如:
public class DynamicReceiver extends BroadcastReceiver { public DynamicReceiver() { } @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. // throw new UnsupportedOperationException("Not yet implemented"); Log.i("MainActivity", "接收自定义动态注册广播消息"); if(intent.getAction().equals("com.itep.dynamicbroadcast")){ String msg = intent.getStringExtra("msg"); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } } }
- 动态注册自定义广播,一般在onStart()的时候注册,如:
//动态注册自定义广播 IntentFilter filter_dynamic = new IntentFilter(); filter_dynamic.addAction("com.itep.dynamicbroadcast"); registerReceiver(dynamicReceiver,filter_dynamic);
- 发送广播消息:
Intent intent = new Intent(); intent.setAction("com.itep.dynamicbroadcast"); intent.putExtra("msg","接收动态注册广播成功"); sendBroadcast(intent);