(Android开发辅助工具)动态广播注册解注工具
发布日期:2021-08-29 00:27:04
浏览次数:10
分类:技术文章
本文共 3339 字,大约阅读时间需要 11 分钟。
平常我们开发的时候需要使用到动态注册广播,如果在一个类内注册很多的广播代码就会既冗余又乱糟糟的,就像这样:
msgReceiver = new NewMessageBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(EMChatManager.getInstance().getNewMessageBroadcastAction()); registerReceiver(msgReceiver, intentFilter); IntentFilter ackMessageIntentFilter = new IntentFilter(EMChatManager.getInstance() .getAckMessageBroadcastAction()); registerReceiver(ackMessageReceiver, ackMessageIntentFilter); IntentFilter cmdMessageIntentFilter = new IntentFilter(EMChatManager.getInstance() .getCmdMessageBroadcastAction()); registerReceiver(cmdMessageReceiver, cmdMessageIntentFilter);
newMessageBroadcastReceiver = new NewMessageTipBroadcastReceiver(); IntentFilter filter = new IntentFilter(StringConstants.NewMessageBroadcastReceiver); filter.addCategory(Intent.CATEGORY_DEFAULT); registerReceiver(newMessageBroadcastReceiver, filter); disTipBroadcastReceiver = new DisTipBroadcastReceiver(); filter = new IntentFilter(StringConstants.DisTipBroadcastReceiver); filter.addCategory(Intent.CATEGORY_DEFAULT); registerReceiver(disTipBroadcastReceiver, filter);上面是我们的注册部分,除了我们需要将广播的引用升级为类的成员之外,我们还需要添加解注代码,就像下面这样:
if (newMessageBroadcastReceiver != null) { unregisterReceiver(newMessageBroadcastReceiver); } if (disTipBroadcastReceiver != null) { unregisterReceiver(disTipBroadcastReceiver); } if (mJPushReceiver != null) { unregisterReceiver(mJPushReceiver); } if (newMessageBroadcastReciver != null) { unregisterReceiver(newMessageBroadcastReciver); } if (newTeacherMessageBroadcastReciver != null) { unregisterReceiver(newTeacherMessageBroadcastReciver); } if (newMessageUserCenterBroadcastReciver != null) { unregisterReceiver(newMessageUserCenterBroadcastReciver); } if (mUIRefreshReceiver != null) { unregisterReceiver(mUIRefreshReceiver); }所以,我们需要一种极为简便的工具来完成这些工作,让我们开发的时候不用去关心那么多不重要的东西:
package com.sahadev.commontools;import java.util.Map;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.support.v4.util.ArrayMap;/** * 广播注册解注工具 * * @author Sahadev * */public class RegisterReceiverUtils { private static Map上面这个工具只是简单的对注册解注做了简单的封装,如果可以,我们可以开放开启与关闭方法,与Activity这样的组件的创建销毁方法进行关联,以达到我们更简便的目的。, BroadcastReceiver> MAPS = new ArrayMap , BroadcastReceiver>(); /** * @param context * @param broadcastReceiverClass * @param action */ public static void registerBroadcastReceiver(Context context, Class broadcastReceiverClass, String action) { IntentFilter filter = new IntentFilter(action); filter.addCategory(Intent.CATEGORY_DEFAULT); try { BroadcastReceiver broadcastReceiver = (BroadcastReceiver) broadcastReceiverClass.newInstance(); if (broadcastReceiver != null) { MAPS.put(broadcastReceiverClass, broadcastReceiver); context.registerReceiver(broadcastReceiver, filter); } } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } public static void unregisterBroadcastReceiver(Context context, Class broadcastReceiverClass) { BroadcastReceiver broadcastReceiver = MAPS.get(broadcastReceiverClass); context.unregisterReceiver(broadcastReceiver); MAPS.remove(broadcastReceiverClass); }}
转载地址:https://blog.csdn.net/weixin_33975951/article/details/89871962 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月12日 18时06分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
消息队列:解耦、异步、削峰,现有MQ对比以及新手入门该如何选择MQ?
2019-04-27
【奇技淫巧】-- 三角形最小路径和
2019-04-27
【小技巧】argc和argv的用法
2019-04-27
学不下去了怎么办?
2019-04-27
二叉树的前中后序遍历(迭代法)(带动画)
2019-04-27
【小技巧】【XShell】【Xftp】Windows桌面与Linux虚拟机互传文件
2019-04-27
【redis入门】Centos下安装redis
2019-04-27
【redis入门】redis安装后相关知识串讲
2019-04-27
【redis】来吧,展示一下redis 发布-订阅模式
2019-04-27
当下热点词再学:redis缓存预热、更新、降级,限流
2019-04-27
【redis6.0.6】redis源码慢慢学,慢慢看 -- 第五天:adlist
2019-04-27
别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲
2019-04-27
通过域名获取主机IP -- struct addrinfo
2019-04-27
【C++】算法集锦(8):从两数和问题拓展到一百数和问题
2019-04-27
【C++】算法集锦(9):背包问题
2019-04-27
【C++】算法集锦(10)通俗讲kmp算法
2019-04-27
【C++】算法集锦(12):高楼扔鸡蛋
2019-04-27