(Android开发辅助工具)动态广播注册解注工具

平常我们开发的时候需要使用到动态注册广播,如果在一个类内注册很多的广播代码就会既冗余又乱糟糟的,就像这样:

			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<Class<?>, BroadcastReceiver> MAPS = new ArrayMap<Class<?>, 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);}}

上面这个工具只是简单的对注册解注做了简单的封装,如果可以,我们可以开放开启与关闭方法,与Activity这样的组件的创建销毁方法进行关联,以达到我们更简便的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 535. TinyURL 的加密与解密(哈希)

文章目录1. 题目信息2. 哈希解题1. 题目信息 TinyURL是一种URL简化服务&#xff0c; 比如&#xff1a;当你输入一个URL https://leetcode.com/problems/design-tinyurl 时&#xff0c;它将返回一个简化的URL http://tinyurl.com/4e9iAk. 要求&#xff1a;设计一个 TinyURL 的…

论文浅尝 | Doc2EDAG:一种针对中文金融事件抽取的端到端文档级框架

论文笔记整理&#xff1a;叶宏彬&#xff0c;浙江大学博士生&#xff0c;研究方向为知识图谱、自然语言处理。链接&#xff1a;https://arxiv.org/pdf/1904.07535.pdf背景大多数现有的事件提取&#xff08;EE&#xff09;方法仅提取句子范围内的事件参数。但是&#xff0c;此类…

NeurIPS'20 | 通过文本压缩,让BERT支持长文本

作者 | wangThr来源 | 知乎这是今年清华大学及阿里巴巴发表在NIPS 2020上的一篇论文《CogLTX: Applying BERT to Long Texts》&#xff0c;介绍了如何优雅地使用bert处理长文本。作者同时开源了不同NLP任务下使用COGLTX的代码&#xff1a;论文题目&#xff1a;CogLTX: Applying…

福利!Android官方网站出现中文版本!

这两天在Android开发者网站上查东西的时候发现有中文的搜索结果&#xff0c;点开结果全是中文的&#xff0c;以后可以畅通无阻的看文档了&#xff0c;快来围观。

自然场景人脸检测技术实践

一、 背景 人脸检测技术是通过人工智能分析的方法自动返回图片中的人脸坐标位置和尺寸大小&#xff0c;是人脸智能分析应用的核心组成部分&#xff0c;具有广泛的学术研究价值和业务应用价值&#xff0c;比如人脸识别、人脸属性分析&#xff08;年龄估计、性别识别、颜值打分和…

LeetCode 257. 二叉树的所有路径(DFS)

文章目录1. 题目2. DFS解题1. 题目 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例:输入:1/ \ 2 3\5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->…

JAVA BIO

JAVA BIO深入剖析1. Java BIO 基本介绍2. Java BIO 工作机制3. 传统BIO编程4. BIO模式下的多发和多收消息5. BIO模式下接收多个客户端6. 伪异步I/O编程7. 基于BIO的文件上传8. Java BIO模式下的端口转发9. 基于BIO模式下的即时通信功能清单简单说明项目启动与演示1. Java BIO 基…

速览EMNLP 2020上录取的知识图谱相关论文

文 | 泽宇源 | 知乎前不久&#xff0c;自然语言处理领域三大顶会之一的 EMNLP 2020 发布了论文录取的结果。在EMNLP 2020论文正式出版之前&#xff0c;泽宇搜集了目前Arxiv上已经发布出来的录取在EMNLP 2020上所有和知识图谱相关的论文&#xff0c;下面我们就一起来一睹为快。1…

技术动态 | 数据库研究者视角下的知识图谱研究

本文转载自公众号&#xff1a;图谱学苑 。本次讲解的是数据库领域的三大会&#xff08;SIGMOD、VLDB、ICDE&#xff09;近两年关于图数据的研究进展&#xff0c;特别是知识图谱的最新研究。知识图谱是2012年Google为改进其搜索引擎而提出的概念&#xff0c;其本质是一个描述事物…

MultiDex

原文转自&#xff1a;http://coolpers.github.io/multidex/2015/04/13/multidex.html 1.MultiDex的产生背景 当Android系统安装一个应用的时候&#xff0c;有一步是对Dex进行优化&#xff0c;这个过程有一个专门的工具来处理&#xff0c;叫DexOpt。DexOpt的执行过程是在第一次加…

PYTHON得到pdf页数、遍历当前文件夹

#第一步安装PyPDF2 pip install PyPDF2#第二步导入相应的模块 from PyPDF2 import PdfFileReader#第三步&#xff1a;定义相对应的函数 def get_num_pages(file_path):"""获取文件总页码:param file_path: 文件路径:return:"""reader PdfFileRe…

LeetCode 814. 二叉树剪枝(递归)

文章目录1. 题目2. 递归解题1. 题目 给定二叉树根结点 root &#xff0c;此外树的每个结点的值要么是 0&#xff0c;要么是 1。 返回移除了所有不包含 1 的子树的原二叉树。 把只包含0的子树删除&#xff08;断开&#xff09; 来源&#xff1a;力扣&#xff08;LeetCode&…

怎样缓解灾难性遗忘?持续学习最新综述三篇

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

美团点评技术年货:900+页电子书,覆盖前端、后台、大数据、算法……

新年将至&#xff0c;年味渐浓。 美团点评技术年货如期而至。 从2013年12月4日发布第一篇文章&#xff0c;一直到今天&#xff0c;美团技术团队官方博客已经走过了6个春秋。 截止目前&#xff0c;我们共发布376篇技术文章&#xff0c;微信公众号&#xff08;meituantech&#x…

论文浅尝 | 基于用户反馈的交互式自然语言回答系统提升机制

本文转载自公众号&#xff1a;图谱学苑。今天介绍的工作是An Interactive Mechanism to Improve Question Answering Systems via Feedback&#xff0c;作者&#xff1a;张欣勃&#xff0c;邹磊&#xff0c;胡森&#xff0c;被CIKM2019接收。本文是一篇与知识库自然语言问答系统…

Android控件默认风格解析之SeekBar

在我们开发的时候常常需要更改原生控件的默认效果&#xff0c;有时候某些控件改起来挺费劲的&#xff0c;比如SeekBar的背景与其ProgressBar的进度粗细或者thumb居中现实与否如果弄错&#xff0c;都是个大麻烦&#xff0c;我曾经就为thumb的居中显示问题浪费了很多很多的时间&a…

基于模板的文字识别结果结构化处理技术

原文链接&#xff1a;https://cloud.tencent.com/developer/article/1425800 嘉宾 | 向宇波编辑 | suiling来源 | AI科技大本营在线公开课出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;随着行业的发展和技术的成熟&#xff0c;文字识别&#xff08;OCR&…

LeetCode 1008. 先序遍历构造二叉树(已知先序,求二叉搜索树)

文章目录1. 题目2. 解题1. 题目 返回与给定先序遍历 preorder 相匹配的二叉搜索树&#xff08;binary search tree&#xff09;的根结点。 示例&#xff1a;输入&#xff1a;[8,5,1,7,10,12]&#xff0c;已知二叉搜索树的先序&#xff08;根左右&#xff09; 输出&#xff1a…

美团开源 Logan Web:前端日志在 Web 端的实现

1.前言 Logan 是美团点评推出的大前端日志系统&#xff0c;支持多端环境运行&#xff0c;可为客户端、Web、小程序等用户端环境提供前端日志的存储、收集、上报及分析能力&#xff0c;能够帮助开发人员快速定位并解决端上问题&#xff0c;便于及时响应用户反馈与排除异常。 201…

推荐一个快速定位深度学习代码bug的炼丹神器!

文 | McGL源 | 知乎写深度学习网络代码&#xff0c;最大的挑战之一&#xff0c;尤其对新手来说&#xff0c;就是把所有的张量维度正确对齐。如果以前就有TensorSensor这个工具&#xff0c;相信我的头发一定比现在更浓密茂盛&#xff01;TensorSensor&#xff0c;码痴教授 Teren…