Android Broadcast
广播的类型:
- 标准广播:是一种异步执行的广播,广播接收器同时接受,无法截断
sendBroadcast( intent);
- 有序广播;是一种同步执行的广播,广播接收器有先后顺序(看优先级),可以截断
sendOrderedBroadcast( intent, null);
注册广播的方式:
- 动态注册:
intentFilter.addAction("");
registerReceiver( 广播接收器实例 , intentFilter);
动态注册的广播接收器一定都要取消注册unregisterReceiver( 广播接收器实例, intentFilter);
- 静态注册
可以让程序在未启动的情况下就能接收到广播
静态的广播接收器一定要在AndroidManifest.xml方法中注册才可以使用,使用AS快捷方式创建的广播接收器会自动进行注册。
创建广播接收器
创建一个类,继承自BroadcastReceiver,并重写onReceive()方法
使用本地广播
前面介绍的广播都属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且也可以接受来自其它应用程序的广播,这样就很容易引起安全性问题。
为了能够简单地解决广播安全性问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播,这样就可以解决安全性的问题。
本地广播主要就是使用了一个LocalBroadcastManager来对广播就行管理,并提供了发送广播和注册广播接收器的方法。
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);
localBroadcastManager.registerReceiver(接收器实例, intentFilter);
localBroadcastManager.unregisterReceiver(接收器实例);
注:本地广播是无法通过静态注册的方式来接收的