每次系统Broadcast事件发生后,系统就会创建对应的BroadcastReceiver的实例,并自动触发它的onReceive()方法,onRecevie()方法执行完后,BroadcastReceiver的实例就被销毁
动态注册方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recevier = new myreceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//当网络发生变化的时候,系统广播会发出值为
registerReceiver(recevier,intentFilter);
}
继承:
public class myreceiver extend BroadcasetReceiver{
@override
pulic void onReceive(Context context,Intent intent){
Toast.......;
}
}
xml文件静态注册方法
<receiver android:name=".myreceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
//开机完成后系统广播发出的一条值为android.intent.action.BOOT_COMPLETED的广播
</intent-filter>
</receiver>
用法:
Intent intent = new Intent();
intent.setAction("com.example.mymessage");
//Intent intent = new Intent("com,example.mymessage");
//也可以像注释这样写
sendBroadcast(intent);//发送标准广播
sendOrderedBroadcast(intent,null);//发送有序广播
1、静态注册
指的是在AndroidManifest.xml中用<receiver>标签进行注册,并在标签内用<intent-filter>标签设置过滤器,例如<action>、<data>等。
<receiverandroid:name=".MyBroadCastReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.PACKAGE_REMOVED"/>
<dataandroid:scheme="package"/>
</intent-filter>
</receiver>
2、动态注册
指的是在代码中进行注册,例如:
IntentFilterfilter = new IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme(“package”);
当不再需要广播接收器时,要记得注销unregisterReceiver(),否则可能引起内存泄露。