需求:

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通信的更多相关文章

  1. EventBus通信小能手

     1.EventBus简介 EventBus 是由 greenrobot 组织开发的一个 Android 事件发布/订阅轻量级框架,特点:代码简洁,是一种发布订阅设计模式(观察者设计模式). Even ...

  2. vertx的Actor模型实现

    前言 note: Context 与 EventLoop 关系 : N ; 每次创建一个vericles或者multi instances 通过EventLoopGroup.next挑出一个Event ...

  3. 整理4种Vue组件通信方式

    整理4种Vue组件通信方式 重点是梳理了前两个,父子组件通信和eventBus通信,我觉得Vue文档里的说明还是有一些简易,我自己第一遍是没看明白. 父子组件的通信 非父子组件的eventBus通信 ...

  4. Android之EventBus1.0 和EventBus3.0的使用详解

    当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,那么我们通常采用的就是Android中的解耦组件EventBus.EventBus是一款针对Android优化的发布/订阅 ...

  5. vue开发知识点总结

    一.vue介绍 Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架,是一个轻量级MVVM(model-view-viewModel)框架. 二.数据绑定 最常用的方式:Musta ...

  6. 快速Android开发系列通信篇之EventBus

    先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现..太烂了.怎么着作为一个技术博客 ...

  7. UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)

    前言 EventBus是一个Android版本的页面间通信库,这个库让页面间的通信变得十分容易且大幅降低了页面之间的耦合.小弟之前玩Android的时候就用得十分顺手,现在玩uwp就觉得应该在这平台也 ...

  8. EventBus完全解析--组件/线程间通信利器

    github地址:https://github.com/greenrobot/EventBus 1, Android EventBus实战, 没听过你就out了 2,  Android EventBu ...

  9. Android 通信 EventBus

    参考: Android 框架炼成 教你如何写组件间通信框架EventBus Android EventBus源码解析 带你深入理解EventBus Android EventBus实战 没听过你就ou ...

随机推荐

  1. iOS 在特定页面 界面旋转

    1.在AppDelegate.h 里添加标记 2.在AppDelegate.m 里添加这个方法 3.使用 [(AppDelegate*)[UIApplication sharedApplication ...

  2. hdu2399GPA

    Problem Description Each course grade is one of the following five letters: A, B, C, D, and F. (Note ...

  3. Python中安装numpy,scipy,matplotlib安装方法

    这个吧,说简单也简单,说难吧我捣鼓了两天才弄出来,真是头发都急白了.其实只要一个网址就搞定了,嘿嘿 http://www.lfd.uci.edu 这里面有你需要的任何东西,当你运行python imp ...

  4. c++STL之sort排序

    排序算法为竞赛中最常用的算法之一,我们可以利用C++自带的库函数进行排序.                                                                ...

  5. CSS圆角样式

    CSS圆角: /*纯css,设置图片圆角*/ #top2 { margin-left:20px; padding:10px; width:600px; height:300px; border: 5p ...

  6. 常用网站开发类Firefox扩展插件 (转)

    作为一个 Web 开发人员,你几乎没有理由不喜欢Firefox,因为在Firefox下有很多专门针对开发的扩展插件,非常好用,这里就介绍一些常用的针对网站开发的FireFox扩展,供Web开发人员参考 ...

  7. 基本语法 - PHP手册笔记

    PHP标记 如果文件内容是纯PHP代码,最好在文件末尾删除PHP结束标记.这可以避免在PHP结束标记之后万一意外加入了空格或者换行符,会导致PHP开始输出这些空白,而脚本中此时并无输出的意图.当然PH ...

  8. ZigBee技术简介

    Zigbee的由来 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷.对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,……而工业自 ...

  9. getpwent()

    http://baike.baidu.com/link?url=XcTB74zhdRLwFaqFIP73u-hSpZgGqYejqnnHGTRfhNF8B7Z2yO4pVwaFaMK24Hkk6nye ...

  10. Longest Substring Without Repeating Characters 最长不重复子串

    只遍历一次字符串即可求出最长不重复子串的长度. int lengthOfLongestSubstring(string s) { vector<,-); //记录字符上一次出现的位置,ASCII ...