美文网首页
安卓本地广播工具类

安卓本地广播工具类

作者: _青_9609 | 来源:发表于2019-11-27 08:14 被阅读0次

LocalBroadcastUtil - 本地广播工具类

简介


LocalBroadcastUntil是一个本地广播的工具类,它可以使我们更方便的使用LocalBroadcastManager

LocalBroadcastManager是安卓系统提供的本地广播管理类,使用这个类可以方便的发送本地广播传递数据且不受线程的影响(消息处理逻辑都在主线程中进行),在不引入第三方库的情况下,LocalBroadcastManager是本地全局消息处理的最佳方式。

如果你需要在Activity之间或者Fragment之间发送事件消息,而又不想自己编写回调接口,LocalBroadcastUntil会是一个非常方便的工具。
例如用户登录成功时,不需要使用startActivityForResult,也不需要传递回调函数,只需要发送一个登录成功的本地广播,在需要刷新的页面中添加响应代码,就可以轻松搞定一个全局状态更新的效果。

集成方法


使用Gradle构建工具集成:(后续版本将仅支持androidx环境)

//android support 工程
dependencies {
    implementation 'com.bonepeople.android.support:LocalBroadcastUtil:1.2.2'
}
//androidX 工程
dependencies {
    implementation 'com.bonepeople.android.lib:LocalBroadcastUtil:1.2.2'
}

使用示例


  • 初始化

    推荐在ApplicationonCreate()函数中进行初始化,初始化的过程中会保存一个LocalBroadcastManager对象用于之后的使用。

    !未经初始化的工具类无法使用。

    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            LocalBroadcastUtil.init(this);
        }
    }
    
  • 注册接收器

    使用registerReceiver(LifecycleOwner, BroadcastReceiver, String...)可以快捷的注册接收器,且无需担心内存泄漏,该receiver会在界面销毁的时候自动注销。

    Activity自身可作为LifecycleOwner参数使用,Fragment可以调用getViewLifecycleOwner()方法获取相应的LifecycleOwner

    BroadcastReceiver receiver = new BroadcastReceiver() {
              @Override
              public void onReceive(Context context, Intent intent) {
                  String action = intent.getAction();
                  if (action == null)
                      return;
                  switch (action) {
                      case Constants.BROADCAST_INCREASE:
                          Log.d(TAG, Constants.BROADCAST_INCREASE);
                          break;
                      case Constants.BROADCAST_REDUCE:
                          Log.d(TAG, Constants.BROADCAST_REDUCE);
                          break;
                  }
              }
          };
    LocalBroadcastUtil.registerReceiver(this, receiver, Constants.BROADCAST_INCREASE, Constants.BROADCAST_REDUCE);
    

    对于额外的广播筛选条件设置,可以使用registerReceiver(LifecycleOwner, BroadcastReceiver, IntentFilter)方法进行注册。

    如果在注册广播接收器的时候并未提供LifecycleOwner参数,在广播接收器使用完毕后需要在合适的时机调用unregisterReceiver(BroadcastReceiver)注销接收器。

    //如果receiver已绑定至界面的生命周期,则无需手动注销。
    LocalBroadcastUtil.unregisterReceiver(receiver)
    
  • 发送广播

    如果是简单的消息广播,可直接调用sendBroadcast(String)发送广播,如果需要传递数据,需要调用sendBroadcast(Intent)发送广播。

    LocalBroadcastUtil.sendBroadcast(Constants.BROADCAST_INCREASE);
    
  • 项目的源码存放于对应的分支中,更多详细的使用方法可以参考对应分支中的simple工程。

混淆说明


本项目对混淆无任何要求。

simple项目展示

示例APP

项目地址


https://github.com/bonepeople/LocalBroadcastUtil
如果这个项目对你有帮助,欢迎来github加个星
如果有任何改进建议也欢迎提交到https://github.com/bonepeople/LocalBroadcastUtil/issues

相关文章

  • 安卓本地广播工具类

    LocalBroadcastUtil - 本地广播工具类 简介 LocalBroadcastUntil是一个本地广...

  • 安卓工具类

    原文:https://www.cnblogs.com/AbrahamCaiJin/p/7154625.html A...

  • Android 常用开源库(四)

    其他 5.1工具类 AndroidUtilCode 强大易用的安卓工具类库 RxTools Android开发人员...

  • 安卓自定义广播接收者

    安卓自定义广播接收者 1.定义广播的key 2.创建广播接收类对象 3.调用activity的方法发送广播

  • 安卓开发入门教程-广播

    什么是广播 广播是安卓系统内应用内各组件、应用间进行轻量化通信的一种机制.发出者发出广播,接收者接收广播. 广播类...

  • 安卓权限工具类

    安卓6.0后敏感权限需要动态申请,近期对之前的权限工具类做了整理和改进。目标,让敲代码更加可控的ctrl c.此...

  • 安卓时间工具类

  • 安卓尺寸工具类

    DimensionUtil - 尺寸工具类 简介 DimensionUtil是一个用于尺寸转换的工具类,主要的用途...

  • Android - 利用 Broadcast 启动 Servic

    一、环境 安卓系统:4.2 操作系统:Win 8.1 工具:Android Studio 二、利用广播开启后台服务...

  • Android手机电池管理

    安卓系统通过广播来接受电池状态,下面是我写的一个简单电池管理项目。 广播接受类BatteryReceiver如下:...

网友评论

      本文标题:安卓本地广播工具类

      本文链接:https://www.haomeiwen.com/subject/lomuwctx.html