Broadcast 直译 称为广播,通俗理解就是有人在播送广播,自然就有人接收广播。有了这个基础了解之后就容易了。
注册广播的类型:静态注册和动态注册
1、在AndroidManifest中的Application的节点中加入<receiver>,在receiver节点中加入action,在java层继承BroadcastReceiver即可
<receiver android:name=".broadcast.MyBroadcast" android:enabled="true" android:exported="true">
<intent-filter>
<!-- <action android:name="broadcast.MyBroadcast"></action>-->
<action android:name="android.intent.action.TIME_TICK"></action>
</intent-filter>
</receiver>
目前随着安卓版本的升级,安卓系统几乎对每个版本都在削弱对静态注册BroadcastReceiver功能
2、动态注册
IntentFilter intentFilter=new IntentFilter(Intent.ACTION_TIME_TICK);
registerReceiver(myBroadcast,intentFilter);
break;
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String data="没有值";
String data1=intent.getStringExtra("data");
if (null!=intent.getStringExtra("data")){
data=data1;
}
Toast.makeText(context,data,Toast.LENGTH_SHORT).show();
}
}
二、广播类型
广播类型分为:标准广播,有序广播
标准广播:同一时间发送给所有接收者
有序广播:广播发送给 A-B-C-D
其中有序广播是可以被拦截 abortBroadcast,并且可以设置优先级别 priority
case R.id.btn_normarl:
intent=new Intent("broadcast.MyBroadcast");
intent.setPackage(getPackageName());
intent.putExtra("data","标准广播:我爱我老婆");
sendBroadcast(intent);
break;
case R.id.btn_order:
intent=new Intent("broadcast.MyBroadcast");
intent.setPackage(getPackageName());
intent.putExtra("data","有序广播:我爱我老婆");
sendOrderedBroadcast(intent,null);
break;