以前一直用Android的广播Broadcast来实现消息传递,后来不知怎么的大家都用EventBus了。我挺奇怪的,就问别人为什么要用EventBus,给我的回答是说EventBus简单易用,消息类型明确,不会被别的应用监听到、干扰到。

我就在想,如果Broadcast也能做到这些,那么岂不是就不需要再用EventBus了?

今天闲来无事,研究了下,发现确实可以做到上面的几点,那么意味着以后就不需要引入EventBus了。

support V4包里引入了这么个工具类,叫LocalBroadcastManager 。它是个轻量级的广播,和原来的广播相比,它只能在单一进程发送接收,不会被别的应用监测到,也不会被别的应用冒充发广播干扰到。总而言之是个轻量级的广播。

那么对它进行简单的封装,就可以做到和EventBus的用法一模一样了,下面是一个登录成功的发送消息和接收消息:

/** * weichenglin create in 2016/3/16 */public class MyListener {    private final static String ACTION_LOGIN_SUCCESS = "ACTION_LOGIN_SUCCESS";//消息类型    private static volatile MyListener myListener = null;    private static LocalBroadcastManager mLocalBroadcast = null;    public static MyListener getInstance() {        if (myListener == null) {            synchronized (MyListener.class) {                if (myListener == null) {                    myListener = new MyListener();                }            }        }        if (mLocalBroadcast == null) {            mLocalBroadcast = LocalBroadcastManager.getInstance(MyApplication.getInstance());        }        return myListener;    }    public void sendLoginMessage(Intent intent) {        intent.setAction(ACTION_LOGIN_SUCCESS);        mLocalBroadcast.sendBroadcast(intent);    }    public void registerLoginListener(BroadcastReceiver broadcastReceiver) {        mLocalBroadcast.registerReceiver(broadcastReceiver, new IntentFilter(ACTION_LOGIN_SUCCESS));    }}

发送消息时这么用:

MyListener.getInstance().sendLoginMessage(new Intent().putExtra("key","value"));

接收消息时这么用:

        MyListener.getInstance().registerLoginListener(new BroadcastReceiver() {            @Override            public void onReceive(Context context, Intent intent) {                String value = intent.getStringExtra("key");                Log.v("tag_2","value = " + value);            }        });


如果以后再有别的消息,定义好消息类型,然后复制粘贴sendLoginMessage()和registerLoginListener()方法即可。是不是和EventBus用法一模一样?

更多相关文章

  1. 仿微信、短信、QQ等消息数目右上角红色小圆球气泡显示(基于Androi
  2. android编程之广播机制详解
  3. 以php开发服务器后台的android即时通讯app的一种实现思路
  4. Android(安卓)Service 通知Activity更新界面的方法研究|Service
  5. Android(安卓)深入讲解Handler机制
  6. [置顶] 浅学使用Android的mvp模式+otto消息总线
  7. android消息处理机制原理解析
  8. Android(安卓)开发之旅:短信的收发及在android模拟器之间实践(一)
  9. 微信消息中的电话超链接(ios vs Android)

随机推荐

  1. android xml界面布局常用属性概括
  2. android(安卓) SDK 环境变量配置
  3. android am命令
  4. Android中使用自定义Dialog时match_paren
  5. iphone/android比较学习之──获取屏幕分
  6. Android中常用的五种布局
  7. 【Android】AS环境下,在布局中使用android
  8. android 修改键盘enter图标,设置搜索等图
  9. Android调用Unity3D
  10. Android(安卓)摇一摇太灵敏的解决方法