广播有两种类型:标准广播和有序广播。
标准广播是一种完全异步执行的广播,在广播发出后,所有的广播接收器几乎都会在同一时刻接收到这条广播信息,因此它们之间没有任何先后顺序可言。这种广播效率会比较高,但同时也意味着它是无法被截断的。
有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播信息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
注册广播的方式一般有两种:在代码中注册(动态)
在AndroidMainfest.xml中注册(静态)
一、动态注册
只需要新建一个类,继承自BroadcastReceiver,并重写父类的onReceiver()方法。当有广播到来时,onReceive()方法就会得到执行,
具体的逻辑就可以在这个方法中处理。
动态注册的广播接收器一定都要取消注册才行,可在onDestroy()方法中通过调用unregisterReceiver()方法来实现。
到时候我会放上我闹钟的广播例子。
动态注册的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是
它也存在着一个缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在
onCreate()方法中的。所以需要使用静态注册的方式来解决。
二、静态注册
时间: 2024-10-03 14:01:07