EventBus是針一款對Android的發佈/訂閱事件總線。它可讓咱們很輕鬆的實如今Android各個組件之間傳遞消息,而且代碼的可讀性更好,耦合度更低。長話短說直接介紹使用。git
public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //註冊事件 EventBus.getDefault().register(this); //這裏是註冊事件 請注意這裏 Button startService = (Button) findViewById(R.id.startIntentService); startService.setOnClickListener(this); SpeechUtility. createUtility(this, SpeechConstant. APPID + "=5b02688c" ); handler=new Handler(); handler.postDelayed(runnable, 1000);//每1秒執行一次runnable. // startMyService(getApplicationContext()); }
EventBus.getDefault().post(new MessageEvent("problem:"+textString));
@Subscribe(threadMode = ThreadMode.MainThread) public void onMessageEventMainThread(MessageEvent messageEvent) { Log.i("MainThread", messageEvent.getMessage()); Toast.makeText(this, messageEvent.getMessage(), Toast.LENGTH_SHORT).show(); }
@Override protected void onDestroy() { super.onDestroy(); //取消事件註冊 EventBus.getDefault().unregister(this); }
在EventBus的事件處理函數中須要指定線程模型,即指定事件處理函數運行所在的想線程。在上面咱們已經接觸到了EventBus的四種線程模型。那他們有什麼區別呢?
在EventBus中的觀察者一般有四種線程模型,分別是PostThread(默認)、MainThread、BackgroundThread與Async。github