Activity Broadcast
广播是用于应用程序之间传输信息的一种机制。使用广播,需要先定义广播接收器,然后发送广播。如果已经注册的广播接收器IntentFilter与发送的Intent相匹配,就会通过onReceive()来接收这条信息;
1.BroadcastReceiver
广播接收器使用有两种方式:
第一种,通过在AndroidManifest.xml使用<receiver>标签进行注册,使用<intent-filter>标签设置过滤器。这种方式注册的广播,系统会进行管理,自己进行注册和销毁。
第二种,在代码中进行定义,一般在onStart()中进行注册,使用Context.registerReceiver()方法,一般在onStop中销毁,销毁时使用Context.unregisterReceiver()方法。如果使用该方式注册,Context被销毁时,BroadcastReceiver也会自动取消注册。
2.Broadcast
如果在发送广播时指定了接收权限,那么需要在AndroidManifest中使用<uses-permission>来声明该权限的Activity才能接收该广播。反过来说,如果你在广播接收器中定义了可接收的广播的权限,那么你同样需要在AndroidManifest中使用<uses-permission>来声明该权限,这样拥有该权限的Activity才能发送可被拥有该权限广播接收器的广播。
发送广播有如下三种方式:
sendBroadcast() 通过这种方式发送的广播,如果接收的Activity不处于OnResume状态则无法收到,后面在恢复到onResume也不行。
sendOrderBroadcast() 这种方式发送的广播被称为有序广播,接收的顺序是按照定义的优先级高低来控制的,优先级越高,越先接收。优先级可以通过在xml设置android:priority也可以在代码中通过setPriority()来设置。
取值范围为-1000到1000。之前的广播接收者可以把它处理的结果通过Intent传递给下一个接收者,也可以终止该广播,则后面的广播接收者无法接收该广播。
sendStickyBroadcast() 与sendBroadcast()不同在于,恢复到onResume状态后,可以重新接收到之前不在该状态的广播。