在Android studio环境下使用EventBus
EventBus是一个订阅/发布消息总线,实现在应用程序里面,组件之间,线程之间的通信。因为event是任意的类型,所以这个使用起来非常方便。
eventbus中的角色:
event:当然就是事件啦
subscriber:事件的订阅者,先注册,接收特定的对象,并通过onEventXXX()来回收处理事件。
Publisher:事件的发布者,通过post发布信息。
处理过程主要分为5步:
1.定义一个事件(event)
2.注册一个订阅者
3.发布一个事件
4.接收处理一个事件
5.注销一个订阅者
四种处理事件的方式onEventXXXX
onEvent函数一共有四种,前面的例子只用到一个onEvent。
函数名 | 含义 | ThreadMode |
---|---|---|
onEvent | 事件处理在事件发送的那个线程执行 | PostThread |
onEventMainThread | 事件在主线程-UI线程执行 | MainThread |
onEventBackgroundThread | 事件在一个后台线程执行(就一个后台线程) | BackgroundThread |
onEventAsync | 事件会单独启动一个线程执行(每个事件都会启动一个线程) | Async |
其中前三个事件处理方式,都应该尽快完成。
在as下的代码示例
改module下的在build.gradle 文件里面,dependencies目录下添加这一句话
compile 'de.greenrobot:eventbus:2.4.0'
在连网的情况下,build工程,as会自动去网上下载相应的jar包。build结束后就可以编程了。
1.定义event。在FirstEvent.java中的代码如下
public class FirstEvent { private String msg;
public FirstEvent(String str){
msg = str;
} public String getMsg(){
return msg;
}
}
2.注册一个订阅者,在MainActivity.java 中的onCreate()方法中加入如下代码
EventBus.getDefault().register(this);
3.发布一个事件。在SecondActivity中发布一个事件,当点击button后发布事件,代码如下
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second); btn = (Button)findViewById(R.id.second_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //发布一个事件
EventBus.getDefault().post(new FirstEvent("this is an event. "));
}
});
4.接收并处理一个事件,在MainActivity中处理改事件,添加如下代码。
public void onEventMainThrend(FirstEvent event){
String str = "this is in main activity , "+event.getMsg(); Log.d("yuqt",str);
tv.setText(str);
Toast.makeText(this,str,Toast.LENGTH_LONG).show();
}
5.注销事件,在onDestroy()中进行注销。
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
完成。
在Android studio环境下使用EventBus的更多相关文章
- Android Studio环境下代码混淆+签名打包
Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...
- Android Studio环境下搭建ReactNative
1.安装Android Studio首先肯定是 安装Android Studio(包含SDK)(国内推荐)ps:这里有一点要注意,需要为SDK配置环境变量,名称必须为ANDROID_HOME 2.安装 ...
- 【Mac + Android】之Android Studio 环境搭建,AVD模拟器运行(包括:命令行运行AVD,并且Genymotion模拟器插件配置运行)
目录: 前提.Mac环境下手动配置Android SDK 一. Android Studio下载及配置 二.AVD模拟器配置运行 扩展:命令行运行AVD模拟器 三.在Android Studio 中配 ...
- genymotion安装(unknown generic error)及配置在Android studio环境中
/*转载请注明出处.本文地址:http://write.blog.csdn.net/postedit/44261371*/ genymotion模拟器的长处我就不阐述了,一个字:快!! .如今来说一下 ...
- Ubuntu下Android Studio环境搭建
1.JDK安装 a.准备 由于AS(Android Studio)不支持openjdk,需要另行下载oracle jdk,同时官网指出对于64位linux系统,为了能在其上运行32位程序,需要安装一些 ...
- 【Android测试】【随笔】Android Studio环境搭建
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5482778.html 随着Android Studio的推 ...
- Android Studio 环境部署 (转载)
Android Studio的安装和使用过程经常需要下载以来文件和Gradle版本,而Google网站在天朝的访问可谓步履维艰,没有稳定的FQ工具是非常痛苦的.何况,作为一个优秀的程序员,不能访问国外 ...
- Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令
https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载.安装和环境变量配置 http ...
- 【App性能监控】:Android studio环境的搭建(以及遇到个各种坑)
今天搭建app性能测试环境,使用的是android studio的Android Device Monitor抓取trace日志分析: 1,下载最新的android studio安装,这一步没啥问题: ...
随机推荐
- iOS UIScrollView偏移量属性
contentSize: The size of the content view. 其实就是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentS ...
- 学习笔记——单例模式Singleton
单例模式,很容易理解,就它一个. 比如网络请求服务类WebReq.它自己生成请求线程,并管理请求数据的返回,所以我们使用它进行网络请求时,不用每次都new一个,只需要使用一个实例就行了.WebReq实 ...
- Django - 通用视图
urls.py from . import views ... url(r'^$', views.IndexView.as_view, name="index"), url(r'^ ...
- L8,the best and the worst
expressions: enter for 报名参加,只有作为参加的意思的时候才会用for enter the room进入房间 a little prize for the worst garde ...
- java工程开发之图形化界面之(第二课)
上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...
- CSS代码格式化工具
CSS代码格式化工具 http://tool.lanrentuku.com/cssformat/ 可实现CSS代码格式化和CSS在线压缩 请将CSS代码复制到下面表单中:
- 4-20ma转 0-5V
源:4-20ma转 0-5V 关于4-20ma转0-5v------解决方案--------------------------------------------------------恒流源(内阻 ...
- drawRect 进阶
iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动 ...
- 程序员 10Tips
理解技术债务 技术债务就像信用卡一样,会有很高的利息率,时间越长,修复所花的代价就越大,程序员对这个要有深刻的认识.同时团队应该培养一种保证设计质量的文化,应当鼓励重构.同时也应当鼓励其它有关代码质量 ...
- document.createElement方法的使用
我们在使用createElemen方法t创建一个元素节点的时候,似乎在IE下面怎么写都可以,但切换到FF等其它浏览器却总是会报错. 比如我们要创建一个input元素,那么在IE下,我们可以有多种写法: ...