Android EventBus 3.0使用マニュアル

2847 ワード

Enventbusの役割とメリットはあまりお話ししませんが、ここでは使い方を紹介します.
2.+バージョンの使用方法
public void onEvent(MessageEvent event) {
    log(event.message);
}
public void onEventMainThread(MessageEvent event) {
    textField.setText(event.message);
}
public void onEventBackgroundThread(MessageEvent event){
   saveToDisk(event.message);
}

3.0以降の書き方
@Subscribe(threadMode = ThreadMode.MainThread) // ui    
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.BackgroundThread) //       
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.Async) //       
public void onUserEvent(UserEvent event) {
}
@Subscribe(threadMode = ThreadMode.PostThread) //    ,        
public void onUserEvent(UserEvent event) {
}

これまでは注釈が多く使われていましたが、注釈の紹介については、下記の記事をご覧くださいhttp://blog.csdn.net/xiangzhihong8/article/details/52850214
EnventBusのシンプルな使い方
@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   EventBus.getDefault().register(this); // 1 :   
}
@Override
protected void onDestroy() {
   super.onDestroy();
   EventBus.getDefault().unregister(this);//   
}


@Subscribe(threadMode = ThreadMode.BackgroundThread) // 2 :              ,      
public void onUserEvent(ClassEvent event) {//     ClassEvent  ,          
}


//     ,      
EventBus.getDefault().post(new ClassEvent());// 3 :     ,     Object,          


//     ,     
public static class ClassEvent{
} //      ,          ,     

//                 ,       
public class MsgEvent {
   public String jsonData;
   public MsgEvent(String jsonData) {
       this.jsonData = jsonData;
   }
}

Stickyイベントの使用 
postStickyを使用してイベントを送信する場合は、先に登録する必要がなく、イベントを受け入れることができます.
まず、次の方法を宣言する必要があります.
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true)
public void onEvent(MsgEvent event){
}

ここのstickyはtrueに設定する必要があります.そしてイベントを送信できます.
EventBus.getDefault().postSticky(new MsgEvent("With Sticky"));

そしてまた受け取る必要がある場所で送信されたイベントを受け入れることができます
EventBusではいくつかのパラメータについて重点的に説明する必要があります.
/**
 * threadMode               (Android  UI      ,         UI,     ThreadMode.MainThread)
 * sticky                   (     postSticky      ,       true       )
 * priority                       (                 ,        ,      .)
 * */
@Subscribe(threadMode = ThreadMode.MainThread, sticky = true, priority = 100)
public void onEvent(MsgEvent event){
}