プロジェクトにイベント バスを追加しようとしています。これは、コードをより読みやすく、アプリケーションを堅牢にするために従うべき非常に優れたパターンだからです。
アクティビティのライフサイクル メソッドをリッスンする必要があります。
なぜこれが必要なのか説明しましょう。
アクティビティがあります。このアクティビティ内には、このアクティビティに正確に関連付けられた実行中のスレッド (またはスレッド) があり、UI の変更をメイン キューにポストします。
アクティビティが破棄または一時停止される場合、スレッドを一時停止し、アクティビティが再び画面に表示されたときにスレッドを再開する必要があります。
もちろん、onDestroy および onStart メソッドで直接スレッドを一時停止/再開できますが、アクティビティのライフサイクル メソッドをリッスンする必要がある別のコンポーネントもいくつかあります。
私の質問があります:
この場合、EventBus を使用するのは正しいですか、それとも、イベント バスを使用せずにアクティビティ ライフサイクル メソッドですべてを直接実行する方がよいでしょうか。また、アクティビティのライフサイクルでイベント バスを使用することは、あいまいで正しくありません。
public class ExampleActivity extends Activity {
private EventBus bus = EventBus.getDefault(); private TextView view; @Override protected void onCreate(Bundle savedInstanceState) { bus.register(this); bus.post(new OnCreateEvent("Activity has been born")); super.onCreate(savedInstanceState); } @Override protected void onDestroy() { // Unregister bus.post(new OnDestroyEvent("Activity is going to die")); bus.unregister(this); super.onDestroy(); }
ここで私が見た利点の 1 つは、アクティビティの一部でロジックが必要になるたびに、ロジックをアクティビティ ライフサイクル メソッドに追加する必要がないことです。アクティビティのコンテンツは非常に複雑になる可能性があり、フラグメントも使用できます。もちろん、フラグメントのライフサイクル メソッドも使用できます。しかし、アクティビティのライフサイクル メソッドが呼び出されるまでフラグメントが破棄されないのだろうかと思いますが、これはまだテストしていません。したがって、ここでの主な質問は、ネイティブフックメソッドメカニズムを使用して、ここで必要なことを行うのと、イベントバスを使用するのとのどちらが良いかということです。
次の質問は、メインの質問とは直接関係ありません。
EventBus
Android用の(EventBus Link)ライブラリが実装されている方法についての質問です。bus.register(this);
1 つのメソッドでインスタンス Subscribe のインターフェイスを実装するために、listener() を作成しないでくださいonEvent(BusEvent event);
。そして、このメソッドにいくつかの基本的なクラスを受け入れさせないでBusEvent
ください。onEvent
ライブラリの実装では、イベントが発生してメソッドが呼び出されるたびにリフレクションが使用されています。このアプローチには利点が見られず、リフレクションはJavaでは非常に重いものです。
回答やアドバイスをいただければ幸いです。