24

アクティビティでイベント バス (otto、EventBus、tinybus など)を登録および登録解除するのに最適な場所とその理由は?

  1. onCreate()-onDestroy()
  2. onStart()-onStop()
  3. onResume()-onPause()

Otto の例では onResume()-onPause() を使用し、EventBus では onStart()-onStop() に言及しています。アプリで onCreate()-onDestroy() を使用して、アクティビティがバックグラウンドにある場合でもアクティビティの UI を更新する必要がありました。ですから、イベントの性質とその処理に応じて、3 つのいずれかになる可能性があると思いますが、それ以上に考慮すべきことがあるのだろうかと考えていました。

4

4 に答える 4

13

まず第一に、それは客観的な質問ではなく主観的な質問であり、議論に基づいて多くの議論を引き出します.

私の経験から、プロジェクトの 1 つでOttoを使用しました。onResume()-onPause() に従いましたが、これは非常に役に立ちました。イベントバスを使用している間は、できるだけ遅く登録し、できるだけ早く登録解除する必要があるため、これも理にかなっています。

于 2015-03-24T15:36:49.727 に答える
3

上記の回答で、onresume/onpause で登録/登録解除するのが最善であるというコメントを削除しました。イベントが注釈付きのサブスクライバーに到達していない場合に、奇妙なユースケースが発生しました。最良の方法は、onstart / onstop を使用することです。ここに理由を説明する良いSO投稿があります:

https://stackoverflow.com/a/19737191/2361947

于 2015-04-21T20:31:23.043 に答える