1.什么是Broadcast(广播)
广播是一种通信机制,通过发送广播和接受广播可以实现跨进程之间的通信(俩个app的通信)。
2.广播的分类及区别——静态注册和动态注册
广播的使用需要一个类继承BroadcastReceiver并且实现它的onReceive()
广播调用时需要注册,分为静态注册和动态注册
*静态注册直接在mainfest注册,例如
//
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.demo3.pm96" />
//为了规范,用包名加.自定义名称
</intent-filter>
</receiver>
*动态注册直接在主函数生成
MyReceiver myReceiver=new MyReceiver();//新建类对象
IntentFilter intentFilter=new IntentFilter();//新建intentFilter对象
intentFilter.addAction("com.example.demo3.pm96");//intentFilter对象添加广播名
registerReceiver(myReceiver,intentFilter);//注册成功
*静态注册是常驻型广播。也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
*动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。移除是用
unregisterReceiver(myReceiver);
最好写在 onDestroy()方法里;
3.广播的分类及区别——有序广播和无序广播
有序广播是会按优先级传递,就像上面领导派发任务是一级一级往下传递,按照大小往下传递,在静态加载中例如
<receiver android:name=".MyBroadcastReceiver">
//按从大到小依次加载,取值范围为-1000—1000.如果重复则优先级为按从上到下进行。
<intent-filter android:priority="1000">
<action android:name="com.example.demo3.pm96" />
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiver2">
<intent-filter android:priority="100">
<action android:name="com.example.demo3.pm96" />
</intent-filter>
</receiver>
动态加载则是在中间加上
intentFilter.setPriority(参数);
默认为无序广播,就像真正的广播,所有收音机都是同时收到广播,同时进行,并没有排队。
4.适配器发送广播实例
android6.0后需要权限详情,安卓8.0
这里写代码片