EventBus下载地址:https://github.com/greenrobot/EventBus
MyEvent:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.zzw.testeventbus; 2 3 public class MyEvent { 4 public int id; 5 public String content; 6 7 public MyEvent() { 8 super(); 9 10 } 11 12 @Override 13 public String toString() { 14 return "MyEvent [id=" + id + ", content=" + content + "]"; 15 } 16 17 }
MainActivity:
1 package com.zzw.testeventbus; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.graphics.Color; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.TextView; 11 import de.greenrobot.event.EventBus; 12 13 public class MainActivity extends Activity { 14 TextView tv; 15 public static final String TAG = "MainActivity"; 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 tv = (TextView) findViewById(R.id.tv); 22 23 EventBus.getDefault().register(this); 24 25 findViewById(R.id.bt).setOnClickListener(new OnClickListener() { 26 @Override 27 public void onClick(View v) { 28 Intent intent = new Intent(MainActivity.this, EventService.class); 29 startService(intent); 30 } 31 }); 32 } 33 // Main线程,这个与Android UI线程密切相关,可以在里面设置UI值,不要阻塞它! 34 public void onEventMainThread(MyEvent event) { 35 Log.d(TAG + "--" + "onEventMainThread", event.toString()); 36 tv.setText(event.content); 37 int id = event.id % 3; 38 if (id == 0) { 39 tv.setTextColor(Color.RED); 40 } else if (id == 1) { 41 tv.setTextColor(Color.GREEN); 42 } else if (id == 2) { 43 tv.setTextColor(Color.BLUE); 44 } 45 } 46 47 // 后台线程中接收处理 48 public void onEventBackgroundThread(MyEvent event) { 49 Log.e(TAG + "--" + "onEventBackgroundThread", event.toString()); 50 } 51 52 // 异步线程中接收处理 53 public void onEventAsync(MyEvent event) { 54 Log.i(TAG + "--" + "onEventAsync", event.toString()); 55 } 56 57 @Override 58 protected void onDestroy() { 59 EventBus.getDefault().unregister(this); 60 } 61 }
EventService:
1 package com.zzw.testeventbus; 2 3 import android.app.Service; 4 import android.content.Intent; 5 import android.os.IBinder; 6 import android.os.SystemClock; 7 import de.greenrobot.event.EventBus; 8 9 public class EventService extends Service { 10 11 @Override 12 public void onCreate() { 13 14 super.onCreate(); 15 } 16 17 private void task() { 18 new Thread(new Runnable() { 19 20 @Override 21 public void run() { 22 for (int i = 1; i <= 100; i++) { 23 MyEvent event = new MyEvent(); 24 event.id = i; 25 event.content = "傻逼" + i; 26 EventBus.getDefault().post(event); 27 SystemClock.sleep(1000); 28 } 29 } 30 }).start(); 31 } 32 33 @Override 34 public int onStartCommand(Intent intent, int flags, int startId) { 35 task(); 36 return super.onStartCommand(intent, flags, startId); 37 } 38 39 @Override 40 public void onDestroy() { 41 super.onDestroy(); 42 } 43 44 @Override 45 public IBinder onBind(Intent intent) { 46 return null; 47 } 48 49 }