当前位置: 首页 > news >正文

荆门网站开发公司/济南网络优化厂家

荆门网站开发公司,济南网络优化厂家,植物提取网站做的比较好的厂家,ubuntu怎么打开wordpress写在前头 EventBus 是一个事件处理总线,可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。它比广播的使用更为简便,且广播的效率并不高。 EventBus的优势 简化了组件间的通讯分离了事件…

写在前头

 EventBus 是一个事件处理总线,可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。它比广播的使用更为简便,且广播的效率并不高。

 

EventBus

 

EventBus的优势

  • 简化了组件间的通讯
  • 分离了事件的发送者和接受者
  • 在Activity、Fragment和线程中表现良好
  • 避免了复杂的和易错的依赖关系和生命周期问题
  • 使得代码更简洁,性能更好

 


Eventbus接受消息的四种ThreadMode

  • POSTING(默认方式) 该方式会使处理消息的函数在与发送消息相同的线程执行,如果发送消息在主线程中,这消息的接收也会在主线程中,如果发送消息在子线程中,这消息的接收也会在子线程中。
  • Main 消息的接收在主线程中被执行(应避免耗时操作)。
  • BACKGROUND 如果发送消息在主线程中则开辟一个新的线程来执行,否则直接在发送消息的子线程中执行。
  • ASYNC 直接开辟一个新的线程来执行消息的接收(该方法不可以操作UI更新)。

 


Eventbus使用详解

 

一、EventBus主要有下面两种事件

  • 普通事件处理(非粘性事件): 必须在创建接收消息方法后,发送的消息才会被接收
  • 粘性事件处理 : 即使在发送消息后才创建接收消息方法依然能够接收得到

二、EventBus使用步骤

  • 订阅消息
  • 创建消息类
  • 发送消息
  • 创建消息接收方法
  • 接收到消息

 

 三、普通事件处理(非粘性事件)

(1)添加依赖

compile 'org.greenrobot:eventbus:3.0.0'

 

(2)在需要订阅的类中注册EventBus

 

//注册EventBusEventBus.getDefault().register(this);

 

(3)创建一个消息类(用于传递)

 

public class MyEvent {private String msg;public MyEvent(String msg){this.msg = msg;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}
}


(4)发送消息

 

//发送消息EventBus.getDefault().post(new MyEvent("从SecondActivity回传消息到MainActivity"));

 

(5)在订阅类中接收消息

@Subscribe(threadMode = ThreadMode.MAIN)public void onEventMainThread(MyEvent event){mTextView.setText(event.getMsg());}

 

(6)使用完毕或者生命周期结束时解绑EventBus

 

 

//取消绑定
EventBus.getDefault().unregister(this);

 

四、粘性事件处理

粘性事件:即消息已经发送以后再订阅,依然可以收到消息。(默认状态为非粘性事件)

我们只需要对之前的接受消息代码稍作修改即可

@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)//设置sticky为true就可以处理粘性事件了public void onEventMainThread(MyEvent event){mTextView.setText(event.getMsg());}

 

粘性事件的发送方法

EventBus.getDefault().postSticky(new MyEvent("测试"));

 

、事件优先级

我们通过@Subscribe订阅,通过其priority属性来设置接收消息的优先级

@Subscribe(threadMode = ThreadMode.MAIN,priority = 1)
public void onEventMainThread(MyEvent event){mTextView.setText(event.getMsg());
}

 

拦截事件传递

当消息的模式为ThreadMode.POSTING时消息是可以被拦截的,通过优先级较高的方法拦截消息后,优先级较低的方法将无法在接收到消息即消息将不会再向下传递.

@Subscribe(ThreadMode.POSTING,priority = 1)
public void onEventMainThread(MyEvent event){mTextView.setText(event.getMsg());EventBus.getDefault().cancelEventDelivery(event);
}

 

 

效果展示

(1)第一个aictivity跳转到第二个activity

mainActivity

 

 

(2)在第二个activity发送消息

secondActivity

 

 

(3)在第一个activity中接收到了第二个activity回传的消息

ReciverMessage

 

 

 

http://www.jmfq.cn/news/4808863.html

相关文章:

  • 前端网站做中 英文怎么说/女生做sem专员的工作难吗
  • 软件公司排名100强/武汉seo搜索引擎
  • java调接口做网站/地推网app推广平台
  • 绵阳top唯艺网站建设/网站生成app工具
  • 手机端建站/seo门户网站建设方案
  • 北京好的做网站的公司/成功的软文推广
  • 做购物网站表结构分析/在线科技成都网站推广公司
  • 在日本做网站/域名大全
  • 网站未做安全隐患检测怎么拿shell/奶茶软文案例300字
  • 四川省和城乡建设厅网站/百度点击率排名有效果吗
  • 怎样保存网站资料 做证据/网络营销策划需要包括哪些内容
  • 金乡县住房与城乡建设局网站/企业网络营销方案策划
  • 易购商城网站怎么做啊/2022网站seo
  • 太平洋建设 网站/网络营销环境分析包括哪些内容
  • 公司怎么做网站需要多少钱/手机流畅优化软件
  • 用网站做CAN总线通信好吗/百度推广的几种方式
  • 企业网站系统详细设计/培训方案
  • 济南网站设计公司推荐/数字营销公司排行榜
  • 旅游公司网站建设/网络推广方式方法
  • 颍上县建设局网站/北京网站
  • wordpress默认模版/推推蛙贴吧优化
  • 福州网站建设推广/百度站长联盟
  • 重庆做网站的/友情链接网站免费
  • 网站建设天天软文靠谱/百度下载并安装最新版
  • 成都网站建设专家/长春seo公司
  • seo百家外链网站/百度app旧版本下载
  • 免费做网站. 优帮云/什么是百度推广
  • 湖北企业网站建设多少钱/天津关键词优化平台
  • 我的世界手机做图的网站/服装市场调研报告范文
  • 网站底部代码大全/百度信息流开户多少钱