EventBus学习

简介:

Git位置https://github.com/greenrobot/EventBus

使用起来很方便:
1. Implement any number of event handling methods in the      subscriber:
     public void      onEvent(AnyEventType event) {} 
2. Register subscribers:
     eventBus.register(this); 
3. Post events to the bus:
     eventBus.post(event); 
4. Unregister subscriber:
     eventBus.unregister(this);

5. public void onEventMainThread(EventType event)方法

两个Activity直接的使用

在第一个Activity的Code如下:

复制代码
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        EventBus.getDefault().register(this);
        textView = (TextView)findViewById(R.id.textView);
        Button btn_try = (Button)findViewById(R.id.btn_try);
        btn_try.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),
                        SecondActivity.class);
                startActivity(intent);
            }
        });
    }

    @Subscribe
    public  void onEventMainThread(EventType event){
        textView.setText(event.getMessage());
        Toast.makeText(this,event.getMessage(),Toast.LENGTH_LONG).show();
    }
复制代码

OnDestory方法

  @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

在第二个Activity中使用

复制代码
 Button btn_first_event = (Button)findViewById(R.id.btn_first_event);
        btn_first_event.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post(new EventType("FistEvent btn cliced"));
            }
        });
复制代码

 

具体实现可参考。

1、《EventBus使用详解(一)——初步使用EventBus》

2、《EventBus使用详解(二)——EventBus使用进阶》

其它参考:

《Android解耦库EventBus的使用和源码分析》:http://blog.csdn.net/yuanzeyao/article/details/38174537

原理很重要哦。

《EventBus的使用初试》:http://blog.csdn.net/pp_hdsny/article/details/14523561

《EventBusExplained  》:https://code.google.com/p/guava-libraries/wiki/EventBusExplained

《Google Guava EventBus实例与分析》

 



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/p/4724670.html,如需转载请自行联系原作者

目录
相关文章
|
IDE 关系型数据库 开发工具
公认超级好用的Mac软件汇总(一)
公认超级好用的Mac软件汇总
441 0
|
存储 弹性计算 固态存储
阿里云服务器是如何收费的?阿里云服务器各收费项目收费标准参考
阿里云服务器收费标准包括实例价格、预留实例券价格、专有宿主机、块存储价格、存储容量单位包、带宽价格、快照服务价格等,云服务器价格主要由云服务器配置费用+磁盘价格+网络宽带价格,配置指的是云服务器的实例规格和cpu与内存配置,本文为大家分享一下2023年阿里云服务器所有收费项目的最新收费标准,以表格形式展示给大家,以供参考。
阿里云服务器是如何收费的?阿里云服务器各收费项目收费标准参考
|
测试技术 运维
并发模式与 RPS 模式之争,性能压测领域的星球大战
本文是《如何做好性能压测》系列专题分享的第四期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
13067 107
|
监控 安全 测试技术
CLAS:用于软件定义网络SDN的协作分层架构
网络软件化的进步正在促进在电信运营商的服务和基础设施中引入可编程性。这通常是通过在网络中引入软件定义网络 (SDN) [RFC7149] [RFC7426] 功能来实现的,包括控制器和协调器。
761 0
CLAS:用于软件定义网络SDN的协作分层架构
|
Web App开发 编解码 前端开发
Unity Render Streaming 云渲染解决方案
Unity Render Streaming 云渲染解决方案
1424 1
Unity Render Streaming 云渲染解决方案
|
存储 机器学习/深度学习 缓存
阿里云容器服务团队实践——Alluxio优化数倍提升云上Kubernetes深度学习训练性能
近些年,以深度学习为代表的人工智能技术取得了飞速的发展,正落地应用于各行各业。越来越多的用户在云上构建人工智能训练平台,利用云平台的弹性计算能力满足高速增长的AI业务模型训练方面的需求,然而这种“本地存储+云上训练”的训练模式加剧了计算存储分离架构带来的远程数据访问的性能影响。
4737 0
阿里云容器服务团队实践——Alluxio优化数倍提升云上Kubernetes深度学习训练性能
|
存储 人工智能 Kubernetes
GPU AI 模型训练
适用于 AI 图片训练场景,使用 CPFS/NAS 作为共享存储,利用容器服务 Kubernetes 版管 理 GPU 云服务器集群进行图片 AI 训练。
19615 0
GPU AI 模型训练
|
弹性计算 运维 监控
ECS主动运维2.0,体验升级,事半功倍
阿里云致力于提供更好用的运维体验,让您使用ECS的过程更透明、高效,并实现更加标准化、自动化的运维方式。基于主动运维2.0,您使用ECS云服务器的体验更加流畅,而且利用系统事件,不再依赖于工单联系客服,可以通过自助处理的方式响应主动运维实例重启,减少对系统可靠性和业务连续性的影响。
4515 0