EventBus下载地址:https://github.com/greenrobot/EventBus

MyEvent:

 package com.zzw.testeventbus;

 public class MyEvent {
public int id;
public String content; public MyEvent() {
super(); } @Override
public String toString() {
return "MyEvent [id=" + id + ", content=" + content + "]";
} }

MyEvent

MainActivity:

 package com.zzw.testeventbus;

 import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import de.greenrobot.event.EventBus; public class MainActivity extends Activity {
TextView tv;
public static final String TAG = "MainActivity"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv); EventBus.getDefault().register(this); findViewById(R.id.bt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, EventService.class);
startService(intent);
}
});
}
// Main线程,这个与Android UI线程密切相关,可以在里面设置UI值,不要阻塞它!
public void onEventMainThread(MyEvent event) {
Log.d(TAG + "--" + "onEventMainThread", event.toString());
tv.setText(event.content);
int id = event.id % 3;
if (id == 0) {
tv.setTextColor(Color.RED);
} else if (id == 1) {
tv.setTextColor(Color.GREEN);
} else if (id == 2) {
tv.setTextColor(Color.BLUE);
}
} // 后台线程中接收处理
public void onEventBackgroundThread(MyEvent event) {
Log.e(TAG + "--" + "onEventBackgroundThread", event.toString());
} // 异步线程中接收处理
public void onEventAsync(MyEvent event) {
Log.i(TAG + "--" + "onEventAsync", event.toString());
} @Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
}
}

EventService:

 package com.zzw.testeventbus;

 import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import de.greenrobot.event.EventBus; public class EventService extends Service { @Override
public void onCreate() { super.onCreate();
} private void task() {
new Thread(new Runnable() { @Override
public void run() {
for (int i = 1; i <= 100; i++) {
MyEvent event = new MyEvent();
event.id = i;
event.content = "傻逼" + i;
EventBus.getDefault().post(event);
SystemClock.sleep(1000);
}
}
}).start();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
task();
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy() {
super.onDestroy();
} @Override
public IBinder onBind(Intent intent) {
return null;
} }

传递消息--第三方开源--EventBus的简单使用的更多相关文章

  1. Android消息通信 第三方开源项目EventBus 的用法

    EventBus是github上的一个第三方开发库,其在github上的项目主页地址:https://github.com/greenrobot/EventBus EventBus的消息模型是消息发布 ...

  2. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  3. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善

    链接地址:http://www.tuicool.com/articles/jyA3MrU 时间 2015-01-05 10:08:18  我是程序猿,我为自己代言 原文  http://blog.cs ...

  4. Android之史上最全最简单最有用的第三方开源库收集整理

    Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者, ...

  5. Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)

    Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog) Android第三方开源对话消息提示框:SweetAlertDialog(sweet- ...

  6. QQ消息99+形成--第三方开源--BezierView

    Android第三方开源的BezierView实现了上述QQ的99+条未读消息气泡显示.Android开源BezierView在github上的项目主页是:https://github.com/che ...

  7. GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    若有任何疑问可通过邮件或微博联系我 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开 ...

  8. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

  9. EventBus的简单使用与原理

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...

随机推荐

  1. English Training Material - 03

    Cross-cultural understanding (2) 1 The following text is about cultural diversity. Read it through o ...

  2. Android—Ormlite框架简单的操作数据库

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  3. 物联网网络编程、Web编程综述

    本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真 ...

  4. iOS 学习 - 6.Objective-C中的各种遍历(迭代)方式

    说明:转自文顶顶 一.使用 for 循环 要遍历字典.数组或者是集合,for 循环是最简单也用的比较多的方法 -(void)iteratorWithFor { //////////处理数组////// ...

  5. C语言-12-日期和时间处理标准库详细解析及示例

    概述 标准库 提供了用于日期和时间处理的结构和函数 是C++语言日期和时间处理的基础 与时间相关的类型 clock_t,本质是:unsigned long typedef unsigned long ...

  6. 团队交流合作简单解决方案:TeamViewer远程控制&会议演示 + HyperCam屏幕录制(免费)

    一. 教程摘要 做开发,团队合作是少不了的.而在合作中,有一部分是花在交流讨论上,其中包括初期的任务分配,成员的进度汇报,以及资源和心得分享等.该教程介绍了两个免费的软件,搭配起来,适合人数不超过25 ...

  7. cmd常用命令 和 sql server相关基础

    在Java开发中 ms sql server 接触算是比较少的,本文记录一些ms sql server的基础知识. 1. 为表字段增加索引:create index user_openid on us ...

  8. cocos2d-x之文件读写

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } auto fu=FileUtils::getInstance(); ...

  9. 烂泥:KVM快照的创建与恢复

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 因为要做有关KVM虚拟机的实验,所以需要虚拟机生成快照.查询相关资料,说KVM可以使用两种方法生成虚拟机的快照. 方法一.使用qemu-img snap ...

  10. Ubuntu安装Eclips for C/C++及相关配置

    1,安装JDK: sudo apt-get install aptitude sudo aptitude search openjava sudo aptitude install openjdk-7 ...