我已經有了這個問題,因爲我切換到EventBus(同樣會發生在任何總線庫)凡凡我想執行一個動作時,視圖沒有準備好,那麼我會得到的錯誤公交車沒有登記;每當視圖尚未啓動時使用總線?
E/EventBus: Could not dispatch event: class com.android.greenfield.Action to subscribing class class com.android.greenfield.GreenStore
時,我想火在生命週期的那些部分的動作它發生:當我需要圖片/視頻
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
actionsCreator.uploadFile(filepath, "image/jpg");
// ... (Error here because the bus isn't yet registered)
}
還是這裏的時候,我收到一個NFC TAG:
@Override
public void onNewIntent(Intent intent) {
actionsCreator.uploadNfcTag(intent);
// ... (Error here because the bus isn't yet registered)
}
如果我按照正常方式或EventBus因爲他們在自己的文檔說,我應該register
和unregister
這樣:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
我發現的唯一的解決方法到目前爲止被註冊和取消註冊時,我想要執行的操作是在onStart()
和onStop()
生命週期之間......但它的髒,我覺得不好
@Override
public void onNewIntent(Intent intent) {
dispatcher.register(GreenStore);
actionsCreator.uplaodNfcTag(intent);
dispatcher.register(GreenStore);
}
你可能想看看 –
難道我粘的事件必須手動處理這些事件或者是我註冊後自動發送?我應該如何處理這種情況? – Jaythaking
您不需要在巴士上註冊即可在巴士上發佈信息。您是否正在使用事件總線在單個活動中路由消息?如果是的話,爲什麼? – CommonsWare