8

私は完璧な Android アプリケーション アーキテクチャを探しており、このトピックに関する素晴らしいブログ投稿をいくつか読みました。

1) http://www.mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html

2) http://birbit.com/a-recipe-for-writing-responsive-rest-clients-on-android/

どちらの投稿でも、Android コンポーネント (アクティビティ、フラグメント、サービス) 間の通信にイベント バスを利用する方法について説明しています。

1 つ、しかし非常に重要なトピックがカバーされていませんでした。一時停止されたときに UI コンポーネントにポストされたイベントを処理する方法。

例: サービスは、アクティビティへのデータのダウンロードの完了時にイベントを投稿しています。そして、現時点では活動は一時停止しています。イベント バスが onPause() で登録解除されているため、このイベントは完全に失われています。

greendao の EvenBus はスティッキーイベントを提供しています。ただし、削除しないとメモリ リークが発生する可能性があります。

square の Otto は、スティッキー イベントの代わりに使用できる "Producer" パターンを紹介します。

最初の解決策では、スティッキー イベントが手動で削除されない場合、メモリ リークが発生する可能性があります。

2 つ目は、プロデューサー メソッドがサブスクライバーにデータを返すまで、どこかにデータを保持する必要があります。この解決策はより正しいように見えますが、より多くのコードを記述する必要があります。

このエッジケースに取り組む方法について、誰かアイデアを教えてください。クリーンなソリューションはありますか?

4

1 に答える 1