android---EventBus的简单使用(一)
是什么:
就是用来发消息通信的
怎么用:
定义事件:(消息体)
public class MessageEvent { /* Additional fields if needed */ }
准备订阅者:声明并注释您的订阅方法,可选择指定一个线程模式
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
//粘性事件
@Subscribe (threadMode = ThreadMode.ASYNC,sticky = true)
public void myEventBusMessageASYNC(MyMessageEvent myMessageEvent){
Log.e("EventBus","MyEventBusActivity2 ThreadMode.ASYNC 执行Thread = "+Thread.currentThread().getName()+"------------"+myMessageEvent.name); }
- 线程模式选择:
- ThreadMode:POSTING 订阅者将在发布事件的同一线程中调用。这是默认值
- ThreadMode:MAIN 订阅者在主线程中执行
- ThreadMode:MAIN_ORDERED 按照发布顺序执行
- ThreadMode: BACKGROUND 如果发布在主线程,则新开一个线程,
- ThreadMode: ASYNC 新的独立线程中执行
- 注册和注销您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
} @Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
- 发布活动:
EventBus.getDefault().post(myMessageEvent);
EventBus.getDefault().postSticky(myMessageEvent);
举例:
- 添加依赖:
implementation 'org.greenrobot:eventbus:3.1.1'
- 创建一个事件,(消息体)
public class MyMessageEvent {
public String name = ""; public MyMessageEvent(String name) {
this.name = name;
}
} - 注册,注销订阅者,按照生命周期来
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_event_bus);
EventBus.getDefault().register(this);
} @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
} - 准备订阅者
@Subscribe (threadMode = ThreadMode.MAIN)
public void myEventBusMessage(MyMessageEvent myMessageEvent){
Log.e("EventBus","name = "+myMessageEvent.name); } //粘性事件@Subscribe (threadMode = ThreadMode.ASYNC,sticky = true)
public void myEventBusMessageASYNC(MyMessageEvent myMessageEvent){
Log.e("EventBus","MyEventBusActivity2 ThreadMode.ASYNC 执行Thread = "+Thread.currentThread().getName()+"------------"+myMessageEvent.name); } - 发布活动
MyMessageEvent myMessageEvent = new MyMessageEvent("1");
EventBus.getDefault().post(myMessageEvent);//粘性事件
EventBus.getDefault().postSticky(myMessageEvent);
参考:
http://greenrobot.org/eventbus/documentation/
android---EventBus的简单使用(一)的更多相关文章
- android EventBus的简单使用
今天,简单讲讲Android里关于EventBus的使用. 这几天,由于面试的缘故,我听到了很多Android的流行框架,但是之前自己在公司做APP时并没有使用,所以没有了解.于是在网上查找了资料,学 ...
- Android 第三方类库简单使用之EventBus
Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样 ...
- Android EventBus 3.0.0 使用总结
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6039221.html 本文出自[赵彦军的博客] 前言 EventBus框架 EventBus是一个通用的叫法 ...
- Android EventBus实战 没听过你就out了
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:[张鸿洋的博客] 1.概述 最近大家面试说经常被问到Ev ...
- Android EventBus源码解析 带你深入理解EventBus
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:[张鸿洋的博客] 上一篇带大家初步了解了EventBus ...
- android EventBus 的使用
今天简单的介绍 一下啊 android EventBus 的使用 EventBus 在官方介绍中是订阅......什么的 一大堆 , 在我android 菜鸟眼里 就是用来代替android 广 ...
- Android EventBus源代码解析 带你深入理解EventBus
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:[张鸿洋的博客] 上一篇带大家初步了解了EventBus ...
- Android EventBus现实 听说你out该
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/40794879.本文出自:[张鸿洋的博客] 1.概述 近期大家面试说常常被问到Ev ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- Android -- EventBus解析
EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递.传统的事件传递方式包括:Handler.BroadCastRece ...
随机推荐
- 解决Configuration 'compile' is obsolete and has been replaced with implementation
项目中Gradle版本升级到4.4后,项目构建时,每次出现红色的警告信息: WARNING: Configuration 'compile' is obsolete and has been repl ...
- Smobiler Service是什么?(Smobiler——.NET移动开发平台)
在得知Smobiler即将推出新产品SmobilerService之后,许多人第一个疑问便是——Smobiler Service是什么? Smobiler的开发者对这个exe窗口一定不陌生,有时候因为 ...
- HTML入门知识汇总
1. HTML认识 1.1 什么是HTML HTML是描述(制作)网页的语言,指的是超文本标记语言(Hyper Text Markup Language). 超文本:就是指页面内可以包含图片.链接.甚 ...
- 安卓开发笔记(十二):SQLite数据库储存(上)
SQLite数据库存储(上) 创建数据库 Android专门提供了一个 SQLiteOpenHelper帮助类对数据库进行创建和升级 SQLiteOpenHelper需要创建一个自己的帮助类去继承它并 ...
- springmvc重定向
String success="07大吉大利25"; @RequestMapping("str") public String test1(){ return ...
- ERROR 1129 (HY000): mysqladmin flush-hosts
mysql报错:ERROR 1129 (HY000): Host * is blocked because of many connection errors; unblock with 'mysql ...
- js复制粘贴模板
<script> //绑定在了body上,也可以绑定在其他可用元素行,但是不是所有元素都支持copy和past事件. /* $(document.body).bind({ copy: fu ...
- Beyond Compare 3.3.8 build 16340 + Key
本文摘录自冰点社区:http://forum.z27315.com/topic/14746-beyond-compare-338-build-16340-key/ Download Beyond Co ...
- 你可能需要为你的 APP 适配 iOS 11
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/AZFrqL9dnlgA6Vt2sVhxIw 作者:s ...
- 【死磕 Spring】----- IOC 之深入理解 Spring IoC
在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识,本篇为[死磕 Spring]系列博客的第一篇博文,主要 ...