0

まず、サービスとアクティビティ間の通信を扱うリソースがたくさんあることは知っています。また、Android 開発者ガイドのサービス関連の部分も読みました。ただし、私の場合の最善のアプローチについてはまだわかりません。

サービスと他のコンポーネント (アクティビティなど) との間の通信に関しては、ほとんどの場合、バインドされたサービスがソリューションとして説明されます。しかし、私の理解では、バインドされたサービスを使用すると、常に要求/応答モデルになります。アクティビティは、サービス (要求) でメソッドを呼び出し、戻り値 (応答) を取得します。Android 開発ガイドでは、これをクライアント/サーバー モデルと呼んでいます。

私のシナリオでは、サービスは定期的に POJO のリストを生成しますが、正確には予測できません (1.5 ~ 2 秒ごととしましょう)。これが発生するたびに、リストをアクティビティに転送して画面に表示する必要があります。私の意見では、私のシナリオは要求/応答モデルと一致しないため、バインドされたサービスはここでは解決策ではありません。実際、アクティビティは受動的であり、実際にはサービスを認識していません。もちろん、バインドされたサービスと一緒にポーリング戦略を使用することもできますが、私の場合、これは最善のアプローチではありません。

あなたは何をお勧めします?アクティビティで BroadcastReceiver を使用するソリューションを見つけました (サービスは送信者として機能します)。これが唯一の方法ですか、それとも他のアプローチはありますか? それとも、バインドされたサービスについて間違った理解をしており、それらはリクエスト/レスポンスシナリオに限定されていませんか?

編集:

既に述べたように、サービスによって新しいリスト (java.util) が 1.5 ~ 2 秒ごとに生成され、すぐにアクティビティに渡されます。このようなリストには、モデル オブジェクトを表す 20 ~ 25 個の POJO が含まれています。これらには、それぞれ 5 つの文字列と 3 つの整数が含まれています。複雑さを感じさせるだけです。

BroadcastReceiver は、この量のデータと頻度に対して適切ですか?

4

1 に答える 1