2015-03-26 7 views
3

Я использую Отто и Кинжал. Некоторые из моих событий получаются несколько раз только на одном посту.Отто автобус событий, принимающий несколько событий на одном посту

На мой взгляд, которая отправляет событие:

@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. 
+2

есть ли шанс у вас есть ваша деятельность просочилась и у вас есть несколько приемников зарегистрированы. Пожалуйста, покажите нам, как вы подписываетесь и отписываетесь от автобуса? –

+0

Ах, спасибо! Я не знал, что нам нужно было отменить регистрацию. Я обновил свой ответ. – clocksmith

ответ

7

Я не был Дерегистрация моего объекта шины события.

Добавлено это, и она работает, как ожидалось:

@Override protected void onPause() { 
    super.onPause(); 
    mBus.unregister(this); 
    } 
+0

СПАСИБО. Я встречаю ту же проблему, я думал, что это утечка памяти, пока я не прочитаю ваш ответ. – Shaw

 Смежные вопросы

  • Нет связанных вопросов^_^