Ответ 1
@levavare, я думаю, правильное время для регистрации/отмены регистрации зависит от ваших событий и от того, что вы намерены делать с ними. И могут быть разными для разных событий в одном приложении.
Например, я использую EventBus в Android-приложении, которое контролирует устройство регистрации данных в реальном времени (в данном случае Arduino) через Bluetooth. У меня два совершенно разных типа событий.
Первое событие отправлено моим кодом Bluetooth, чтобы уведомить один из моих фрагментов о том, что с устройства был получен новый набор показаний прибора. Затем этот фрагмент записывает их в таблицу базы данных. Важно, чтобы событие всегда слушалось и действовало. Фрагмент регистрирует/отменяет регистрацию в методах OnCreate/OnDestroy. Я также подписался на это событие с повышенным приоритетом.
Другое событие публикуется слоем базы данных, когда новая запись добавляется в базу данных. У меня есть серия фрагментов, которые показывают разные подмножества отсчетов (температуры, давления, условия тревоги). Когда один из этих фрагментов просматривается, он должен обновляться, как только новое чтение находится в базе данных. Но когда этот фрагмент скрыт из виду, нет никаких оснований для его действия над чтением. У меня эти фрагменты регистрируются/регистрируются в OnStart/OnStop. Я собирался сделать эту работу в OnResume/OnPause, и, честно говоря, я думаю, что это будет работать и для моего приложения. Но @Jordy ответ и ссылка убедили меня пойти с OnStart/OnStop вместо этого.