Android Broadcast 做的简单封装:
来源:互联网 发布:const javascript 编辑:程序博客网 时间:2024/05/01 03:13
在开发过程中,突然发现广播的使用非常的多,因此作出如下三步使用流程,并封装一个BoradcastManager类:
1 、在任何地方发送广播
BroadcastManager.getInstance(mContext).sendBroadcast(FindOrderActivity.ACTION_RECEIVE_MESSAGE);
2、页面在onCreate()中初始化广播
BroadcastManager.getInstance(mContext).addAction(ACTION_RECEIVE_MESSAGE, new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent intent) { String command = intent.getAction(); if(!TextUtils.isEmpty(command)){ if((ACTION_RECEIVE_MESSAGE).equals(command)){ //获取json结果 String json = intent.getStringExtra("result"); //做你该做的事情 } } } });
3、页面在ondestory销毁广播
BroadcastManager.getInstance(mContext).destroy(ACTION_RECEIVE_MESSAGE);
4、BroadcastManager的实现;
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import com.chni.hms_library.util.Log;import java.util.HashMap;import java.util.Map;/** * @ClassName:BroadcastManager * @描述:广播管理者 * @author lidong on 2016/2/18. * @使用方法: * (1)在任何地方发送广播 * BroadcastManager.getInstance(mContext).sendBroadcast(FindOrderActivity.ACTION_RECEIVE_MESSAGE); * (2)页面在onCreate()中初始化广播 * BroadcastManager.getInstance(mContext).addAction(ACTION_RECEIVE_MESSAGE, new BroadcastReceiver(){ * @Override * public void onReceive(Context arg0, Intent intent) { * String command = intent.getAction(); * if(!TextUtils.isEmpty(command)){ * if((ACTION_RECEIVE_MESSAGE).equals(command)){ * //获取json结果 * String json = intent.getStringExtra("result"); * //做你该做的事情 * } * } * } * }); * (3)页面在ondestory销毁广播 * BroadcastManager.getInstance(mContext).destroy(ACTION_RECEIVE_MESSAGE); */public class BroadcastManager { private Context mContext; private static BroadcastManager instance; private Map<String, BroadcastReceiver> receiverMap; /** * 构造方法 * * @param context */ private BroadcastManager(Context context) { this.mContext = context; receiverMap = new HashMap<String, BroadcastReceiver>(); } /** * [获取BroadcastManager实例,单例模式实现] * * @param context * @return */ public static BroadcastManager getInstance(Context context) { if (instance == null) { synchronized (BroadcastManager.class) { if (instance == null) { instance = new BroadcastManager(context); } } } return instance; } /** * 添加Action,做广播的初始化 * * @param */ public void addAction(String action, BroadcastReceiver receiver) { try { IntentFilter filter = new IntentFilter(); filter.addAction(action); mContext.registerReceiver(receiver, filter); receiverMap.put(action, receiver); } catch (Exception e) { e.printStackTrace(); } } /** * 添加Action,做广播的初始化 * * @param */ public void addAction(String[] actions, BroadcastReceiver receiver) { try { IntentFilter filter = new IntentFilter(); for(String action:actions){ filter.addAction(action); } mContext.registerReceiver(receiver, filter); for(String action:actions) { receiverMap.put(action, receiver); } } catch (Exception e) { e.printStackTrace(); } } /** * 发送广播 * * @param action 唯一码 */ public void sendBroadcast(String action) { sendBroadcast(action, ""); } /** * 发送广播 * * @param action 唯一码 * @param obj 参数 */ public void sendBroadcast(String action, Object obj) { try { Intent intent = new Intent(); intent.setAction(action); intent.putExtra("result", obj.toString()); mContext.sendBroadcast(intent); } catch (Exception e) { e.printStackTrace(); } } /** * 销毁广播 * @param actions */ public void destroy(String... actions) { try { if (receiverMap != null) { for(String action:actions){ BroadcastReceiver receiver = receiverMap.get(action); if (receiver != null) { mContext.unregisterReceiver(receiver); } } } } catch (IllegalArgumentException e){ Log.d("Broadcastmanager",e.toString()); } }}
基本上就这些了吧,欢迎大家提建议
2 0
- Android Broadcast 做的简单封装:
- Broadcast的简单封装
- Broadcast的简单使用
- 做一个简单的mvc封装
- Android Broadcast Receiver 简单例子
- Android中的BroadCast简单使用
- Android 中 BroadcastReceiver以及 Broadcast的简单应用
- Android开发笔记---Broadcast Receiver的简单使用
- 简单 易懂的了解android中的Broadcast Receiver
- android 简单的adapter封装
- Android ToolBar 的简单封装
- Android SharedPreferences的简单封装
- Android 简单封装的例子
- Android--Toast的简单封装
- Android Log的简单封装
- android SQLite的简单封装
- Android Adapter的简单封装
- Android的Broadcast Receiver
- Redis总结笔记(一):安装和常用命令
- JSP中的EL表达式详细介绍
- 解决pdflatex文档目录乱码的解决方法
- 第二讲:我的第一个驱动
- 类型转换二:Type casting
- Android Broadcast 做的简单封装:
- 文章标题
- Java设计模式透析之 —— 单例(Singleton)
- Sort It (树状数组+dp)
- firefox的插件
- javascript实现班级的学生信息显示
- 超强、超详细Redis数据库入门教程
- hibernate查询总结
- R与Python巅峰对决