在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安装,这一步没啥问题: ...
随机推荐
- 使用POI生成Excel文件,可以自动调整excel列宽
//autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...
- 【转】VC6.0打开或者添加工程文件崩溃的解决方法
很多学习编程的同学都遇到这样的问题,在Windows操作系统下使用Visual C++ 6.0编程时,如果点击菜单中的[打开]或者[添加],或者按快捷键,都会弹出下图的对话框,出现程序崩溃并退出的情况 ...
- php 四种基础的算法 ---- 冒泡排序法
1. 冒泡排序法 * 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. * 比如:2,4,1 // 第一次 冒出的泡是4 * ...
- 直接在script里面换样式IE6,7,8不兼容
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- w3chtml页面和css书写规范
http://www.cnblogs.com/Wenwang/archive/2011/09/07/2169881.html
- HBase的Shell命令
1.HBase提供了一个shell的终端给用户交互 2.HBase Shell的DDL操作 (1)先进入HBase的 Shell命令行,即HBASE_HOME/bin/hbase shell …… & ...
- svn log操作
查看当前文件夹的最近N次提交记录 svn update; svn log --limit <N> -v 含义是:查询最近N次提交记录的详细信息,包括版本号,提交文件列表,log信息 对比某 ...
- hibernate事务并发问题(脏读,不可重复读,幻读)
脏读 dirty read: 读了别的事务没有提交的事务, 可能回滚, 数据可能不对. 不可重复读 non repeatable read: 同一个事务里前后读出来的数据不一样, 被另一个事务影响 ...
- UAC下的程序权限提升
来源:http://blog.kingsamchen.com/archives/801 UAC是微软为了提高Windows的安全性,自Windows Vista开始引入的新安全机制. 传统的NT内核系 ...
- virtualbox, vt-s, rmmod kvm-intel
http://blog.sina.com.cn/s/blog_4e7b97f00100fltu.html装完后,去下个jdk,坑爹的Oracle非要让老子注册,试了几次都没有成功,密码不合格拉,邮箱已 ...