1.静态注册:在文件清单中注册广播接收者
动态注册:新建一个类,继承自BroadcastReceiver
静态注册:常驻,不受任何组件的生命周期影响.应用程序关闭后,若有广播来,程序依旧会被系统调用.缺点是耗电,占内存.场景:需要时刻监听广播.
动态注册:非常驻,灵活,跟随组件的生命周期变化.场景:需要特定时刻监听广播.
2.自定义广播:把信息装入一个intent对象(如action、category),通过调用sendBroadcast()将intent对象以广播方式发送.发送后,所有已注册的广播接收者会检查注册时的Intentfilter是否与发送的intent匹配,若匹配就会调用广播接收者的onReceive方法.
(1)广播发送:Intent intent=new Intent(); intent.setAction( "forget"); intent.putExtra("forget", "hello"); sendBroadcast(intent);
(2)广播接收
my=new MyReceiver();
string action="forget";
intentfilter filter=new Intentfilter(action); register Receiver(my,filter);
(3)当使用系统广播时,只需要在注册时定义相关的action即可,不用手动发送广播,当系统有相关操作时会自动进行系统广播.
3.无序广播:完全异步执行.发送广播时所有监听这个广播的广播接收者都会收到,但接收的顺序不确定
4.有序广播:按接收者的优先级接收,只有一个接收者能接收消息,在此接收者中逻辑执行完后,才会继续传递.
IntentFilter filter=new IntentFilter();
filter.setPriority(100);
数越大,优先级越高,若优先级相同,先注册的接收者优先级高.
sendOrderedBroadcast();