Android 应用内广播 LocalBroadcastManager

Posted yxfcnbg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 应用内广播 LocalBroadcastManager相关的知识,希望对你有一定的参考价值。

通常我们在使用android广播的时候都会直接将广播注册到系统的AMS当中,由于AMS任务繁忙,一般可能不会立即能处理到我们发出的广播,如果我们使用广播是在应用内的单个进程中使用,则完全可以采用LocalBroadcastManager来处理。LocalBroadcastManager采用的是Handler的消息机制来处理的广播,而注册到系统中的是通过Binder机制实现的,速度是应用内广播要快很多。不过由于Handler的消息机制是为了同一个进程的多线程间进行通信的,因而跨进程时无法使用应用内广播。

在使用上和普通的Broadcast类似,主要分5步:

// 1. 自定义广播接收者
public class LocalReceiver extends BroadcastReceiver
public void onReceive(Context context, Intent intent)
...


LocalReceiver localReceiver = new LocalReceiver();

// 2. 注册广播
LocalBroadcastManager.getInstance(context)
.registerReceiver(localReceiver, new IntentFilter(“test”));
// 4. 发送广播
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("test"));
// 5. 取消注册广播
LocalBroadcastManager.getInstance(context).unregisterReceiver(localReceiver);

和普通的广播一样,在注册广播的时候将该广播接受者注册到LocalBroadcatManager中。当发生时也是调用LocalBroadcastManager的sendBroadcast进行发生。同样在不使用时记得取消广播注册。

消息处理时都在主线程中处理。

以上是关于Android 应用内广播 LocalBroadcastManager的主要内容,如果未能解决你的问题,请参考以下文章

详解Android广播机制

需要有关使用 Java 或 android 在 LAN 内进行可靠数据广播的建议

用户在Android应用中停用位置权限时的广播接收器?

详解广播机制,Broadcast Receiver,Android进阶必备知识。(附使用广播实现一键强制下线功能)

Android 基础知识 -- BroadcastReceiver

Android高效安全的本地广播LocalBroadcast完全解析