在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 NSMutableArray添加NSInteger元素
NSMutableArray *array = [[NSMutableArray alloc] init]; NSInteger num = 7; NSNumber *number = [NSNumb ...
- iOS开发frame, contentSize, contentOffset, contentInset 区别联系浅析
1. 概述 iOS开发中,必然会涉及到布局相关问题,frame,bounds,contenSize,contentOffset,contentInset这几个布局相关概念让许多初学者感到困惑.虽然初步 ...
- XListview的下拉刷新、上拉加载、用Pull解析XML
做之前需要导入XListview的文件,此是用第三方的xListview实现的,东西没写全.此是在Fragment中实现的 //--------------XListView的布局---------- ...
- [转]Android 如何对sqlite数据库进行增删改[insert、update和delete] 操作
import android.content.ContentValues; import android.content.Context; import android.database.Cursor ...
- JS-运动基础(一)续
2.淡入淡出的图片 用变量存储透明度 <title>无标题文档</title> <style> #div1{width:293px; height:220px; b ...
- Android与路由器连接服务
界面UI: package my.work.Library; import java.util.Timer; import java.util.TimerTask; import java.util. ...
- Git学习 -- 分支管理
创建新分支,并切换到该分支 git checkout -b dev 这一句相当于以下两句: git branch dev 创建 git checkout dev 切换 查看当前分支 git branc ...
- KNN邻近分类算法
K邻近(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法了.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:计算一个点A与其他所有点之间的距离,取出与该点最近的 ...
- SORT函数的使用方法(转载)
sort函数的用法(转载出处:http://blog.sina.com.cn/s/blog_6439f26f01012xw3.html) 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写 ...
- bat脚本:自动压缩n天前的文件【转载】
原文如下: bat脚本:自动压缩n天前的文件-中原小伙-ChinaUnix博客http://blog.chinaunix.net/uid-24946452-id-1651762.html 磁盘 ...