EventBus通信
需求:
1.ActivityA打开ActivityB
2.在B中执行某操作后,同时执行A中的方法
lib下载:eventbus-2.4.0.jar jmmy
1.在EventBusTestActivity注册eventBus
EventBus.getDefault().register(this);// 注册广播
2.点击事件跳转
Intent intent = new Intent(getApplicationContext(),EventBusTest2Activity.class);
startActivity(intent);
3.在EventBusTest2Activity中发送广播
EventBus.getDefault().post(new MyEvent("Message From EventBusTest2"));
4.EventBusTestActivity接收广播
// onEvent会放在发送事件的那个线程中去执行,不能进行UI更新
public void onEvent(MyEvent event) {
Log.i("What", "[onEvent]My Thread is "
+ Thread.currentThread().getName());
} // onEventMainThread就是会放到主线程去执行的事件处理,一般在其中进行比如UI的更新的操作
public void onEventMainThread(MyEvent event) {
Log.i("What", "[onEventMainThread] Thread is "
+ Thread.currentThread().getName());
test1.setText("测试完成");
}
5.解除广播
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);// 解除
}
下面贴上源码:
package com.example.activity; import com.example.event.MyEvent; import de.greenrobot.event.EventBus;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class EventBusTestActivity extends Activity implements OnClickListener {
private Button test1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_bus_test);
test1 = (Button) findViewById(R.id.test1);
test1.setOnClickListener(this);
EventBus.getDefault().register(this);// 注册广播
} // onEvent会放在发送事件的那个线程中去执行,不能进行UI更新
public void onEvent(MyEvent event) {
Log.i("What", "[onEvent]My Thread is "
+ Thread.currentThread().getName());
} // onEventMainThread就是会放到主线程去执行的事件处理,一般在其中进行比如UI的更新的操作
public void onEventMainThread(MyEvent event) {
Log.i("What", "[onEventMainThread] Thread is "
+ Thread.currentThread().getName());
test1.setText("测试完成");
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.test1:
Intent intent = new Intent(getApplicationContext(),
EventBusTest2Activity.class);
startActivity(intent);
break;
}
} @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);// 解除
}
}
package com.example.activity; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; import com.example.event.MyEvent; import de.greenrobot.event.EventBus; public class EventBusTest2Activity extends Activity {
private Button click1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_bus_test2); click1 = (Button) findViewById(R.id.click1);
click1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
EventBus.getDefault().post(
new MyEvent("Message From EventBusTest2"));
}
});
}
}
EventBus通信的更多相关文章
- EventBus通信小能手
1.EventBus简介 EventBus 是由 greenrobot 组织开发的一个 Android 事件发布/订阅轻量级框架,特点:代码简洁,是一种发布订阅设计模式(观察者设计模式). Even ...
- vertx的Actor模型实现
前言 note: Context 与 EventLoop 关系 : N ; 每次创建一个vericles或者multi instances 通过EventLoopGroup.next挑出一个Event ...
- 整理4种Vue组件通信方式
整理4种Vue组件通信方式 重点是梳理了前两个,父子组件通信和eventBus通信,我觉得Vue文档里的说明还是有一些简易,我自己第一遍是没看明白. 父子组件的通信 非父子组件的eventBus通信 ...
- Android之EventBus1.0 和EventBus3.0的使用详解
当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,那么我们通常采用的就是Android中的解耦组件EventBus.EventBus是一款针对Android优化的发布/订阅 ...
- vue开发知识点总结
一.vue介绍 Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架,是一个轻量级MVVM(model-view-viewModel)框架. 二.数据绑定 最常用的方式:Musta ...
- 快速Android开发系列通信篇之EventBus
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现..太烂了.怎么着作为一个技术博客 ...
- UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)
前言 EventBus是一个Android版本的页面间通信库,这个库让页面间的通信变得十分容易且大幅降低了页面之间的耦合.小弟之前玩Android的时候就用得十分顺手,现在玩uwp就觉得应该在这平台也 ...
- EventBus完全解析--组件/线程间通信利器
github地址:https://github.com/greenrobot/EventBus 1, Android EventBus实战, 没听过你就out了 2, Android EventBu ...
- Android 通信 EventBus
参考: Android 框架炼成 教你如何写组件间通信框架EventBus Android EventBus源码解析 带你深入理解EventBus Android EventBus实战 没听过你就ou ...
随机推荐
- /boot磁盘空间不足,没盘扩展,只好删除旧内核了
[xiejdm@localhost ~]$ uname -r -.el7.x86_64 [xiejdm@localhost ~]$ sudo rpm -qa | grep kernel kernel- ...
- RTMP流媒体播放过程(转)
http://blog.csdn.net/leixiaohua1020/article/details/11704355 本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程. 注意:RTM ...
- Spring-----4、使用Spring容器
转载自:http://blog.csdn.net/hekewangzi/article/details/41349591
- navicat for mysql 将结果导出到txt文件
其实navicat 是带这个导出功能的,可是很多人不知道怎么用. 1.如图:查询sql语句.得到结果
- 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比
看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...
- xstream对象xml互转
1.引入jar包 xpp3_min-1.1.4c.jarxstream-1.4.8.jar 2.建立java bean package com.jdw.bean; import java.util.A ...
- API例子:用Python驱动Firefox采集网页数据
1,引言 本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器.开源Python即时网络爬虫项目将与Scrapy(基于twisted的异步网络框架)集成,所以本例将使用Scra ...
- LFS,编译自己的Linux系统 - 前言
近期工作计划:1. 上班时,用Django编写一个网站:2. 下班时,用C#.WPF编写一个单机版应用软件:3. 其他时间,根据LFS编译自己的Linux系统. LFS是一本书,书中列出了从零开始编译 ...
- IBM Minus One(water)
IBM Minus One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- c++中在一个类中定义另一个只有带参数构造函数的类的对象
c++中在一个类中定义另一个只有带参数构造函数的类的对象,编译通不过 #include<iostream> using namespace std; class A { public: ...