广播是安卓的四大组件之一,基本上学习安卓都要熟悉四大组件!
广播的注册最常用的大概就两种方法——静态注册和动态注册,静态注册可以常驻在程序中,即使程序关闭之后也能收到广播,从而进行对应的操作,而动态注册则在需要的时候调用,即它的生命周期只在activity存在的范围中,当activity销毁时它便消失了,所有动态注册的广播在onResume()方法中便要把它销毁掉,话不多少,开始写代码,我尽量用最简介的代码让大家看懂!
一、静态注册广播
首先,需要在AndroidManifest.xml文件中注册
然后创建一个广播接收器,继承MyBroadcastReceive,重写里面的onReceiver()方法
<receiver
android:name=".util.MyBroadcastReceive"
android:enabled="true"
android:exported="true">
<intent-filter>
//自定义Action
<action android:name="1" />
</intent-filter>
</receiver>
android:action:类似于一个代码,是String类型,用于区分不同的广播
android:name:指的是当前广播所在的路径(包名+类名)
android:enabled:指的是当前的广播是否能被实例化,true为可以,false为不可以
android:exported:指的是当前的广播是否能被其他的程序调用
MyBroadcastReceive类代码:
public class MyBroadcastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("LOG","broadcast ====="+intent.getAction());
if ("1".equals(intent.getAction())) {
MyHelper.showToast(context, "启动完成!");
}
}
}
在需要的地方进行广播注册,此处可以在baseActivity里面封装好发送广播的方法
//封装发送广播的方法
public void sendBroadcast(String action)
{
Intent intent = new Intent();
intent.setAction(action);
sendBroadcast(intent);
}
然后在MainActivity中的onCreate()方法中进行调用
sendBroadcast("1");
启动程序,当前广播就已经被调了
二、动态注册广播
动态注册的方法也很简单,代码如下
MyBroadcastReceive receive = new MyBroadcastReceive();
IntentFilter filter = new IntentFilter(Constants.mian_broadcast);
registerReceiver(receive,filter);
sendBroadcast(Constants.mian_broadcast);
然后在MyBroadcastReceive中进行调用就行了
if ("1".equals(intent.getAction())) {
MyHelper.showToast(context, "静态注册广播完成!");
}else if(intent.getAction().equals(Constants.mian_broadcast)){
MyHelper.showToast(context,"动态注册广播完成!");
}
最后在onpause()方法中把广播pass掉
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receive);
}
转载请标明出处:https://mp.youkuaiyun.com/postedit/86569733,谢谢!