我正在使用Otto和Dagger。我的一些活动只在一个帖子上多次收到。
在我看来发布活动:
@Inject Bus mBus;
在构造函数中:
((MyApplication) mContext.getApplicationContext()).inject(this);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
Log.d(TAG, "Sending SearchResultClickedEvent.");
mBus.post(new SearchResultClickedEvent(mModel.getPlaceId()));
}
});
在我的订阅活动的超级课程中:
@Inject protected Bus mBus;
在onCreate()
:
((HarryApplication) getApplicationContext()).inject(this);
在订阅活动中:
@Subscribe
public void on(SearchResultsRecyclerViewHolder.SearchResultClickedEvent event) {
Log.d(TAG, "SearchResultClickedEvent received.");
}
单击后的日志:
03-26 12:59:51.496 24613-24613/D/SearchResultView﹕ Sending SearchResultClickedEvent.
03-26 12:59:51.496 24613-24613/D/Subscriber﹕SearchResultClickedEvent received.
03-26 12:59:51.497 24613-24613/D/Subscriber﹕SearchResultClickedEvent received.
03-26 12:59:51.499 24613-24613/D/Subscriber﹕SearchResultClickedEvent received.
答案 0 :(得分:7)
我没有取消注册我的事件总线对象。
添加了这个,它按预期工作:
@Override protected void onPause() {
super.onPause();
mBus.unregister(this);
}