Android LocalBroadcastManager 与 BroadcastReceiver
Android中BroadcastReceiver主要用途有
发送通知,更新UI或者数据,应用程序间相互通信,监听系统状态(比如开机,网络等)
Android中发送广播的方式:
普通广播:无论优先级大小,将发送给所有监听Action="com.test.sample.action"的广播,内容不可被修改,无传递性。
Intent intent = new Intent( "com.test.sample.action");
sendBroadcast(intent);
异步(黏性)广播: 当处理完之后的Intent ,依然存在,这时候registerReceiver(BroadcastReceiver, IntentFilter) 还能收到他的值,直到你把它去掉 , 无传递性 , 无法终止(abort())广播。
发这个广播需要权限<uses-permission android:name="android.permission.BROADCAST_STICKY" />
去掉是用这个方法removeStickyBroadcast(intent); 但别忘了在执行这个方法的应用里面 AndroidManifest.xml 同样要加上面的权限;
sendStickyOrderedBroadcast(intent, resultReceiver, scheduler,
initialCode, initialData, initialExtras)
有序广播:按照接收者的优先级顺序接收广播 , 优先级别在 intent-filter 中的 priority 中声明 ,-1000 到1000 之间 ,值越大 优先级越高 。可以终止广播意图的继续传播 , 接收者可以篡改内容,具有传递性。
sendBroadcast(intent);
注意:安全性都不太好,因此只适用于安全性较低的数据传递,或者页面更新。
所以android在android-support-v4.jar中引入了LocalBroadcastManager,称为局部通知管理器,这种通知的好处是安全性高,效率也高,适合局部通信,可以用来代替Handler更新UI
对于普通:registerReceiver(); registerReceiver();
// Activity:
// 声明 LocalBroadcastManager
LocalBroadcastManager mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
// 声明 BroadcastReceiver
BroadcastReceiver mReceiver new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Todo
}
};
// 注册
mLocalBroadcastManager.registerReceiver(mReceiver, filter);
// Service:
// 声明 LocalBroadcastManager
LocalBroadcastManager mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
// sendBroadcast
mLocalBroadcastManager.sendBroadcast(new Intent(ACTION_FLAG));
最新文章
- andriod 手机按键检测事件 onKeyDown() 简述
- HTML、CSS和JS
- Android源码网站
- xml in hadoop ETL with pig summary
- 异常处理原则--good
- HDU 1688 Sightseeing
- 轮播图切换 纯html+js+css
- MongoDB服务器启动异常 1067
- [转]RecyclerView初探
- Microsoft Accelerator for Windows Azure Alum Azuqua 今天启动
- Apache 2.4虚拟主机配置
- 无法定位程序输入点__gxx_personality_v0的一个解决方法
- 关于Dubbo分布式服务
- webView 不能复制解决方案
- RT-thread 利用Scons 工具编译提示python编码错误解决办法
- JS图片更换还原操作,通过图片识别标识
- [phpvia/via] PHP多进程服务器模型中的惊群
- Java成神路上之设计模式系列教程之一
- Python制作二维码和条形码扫描器 (pyzbar)
- Win10连接远程桌面的时候提示您的凭证不工作该怎么办?