外部デバイスのネットワークを監視する長期サービスがあるとします。ネットワークで新しいデバイスを検出すると、ローカル SQLite データベースのテーブルに行を追加し、既知のデバイスで状態の変化を検出すると、テーブルの対応する行を更新します。(ちなみに、これらの発見と更新がどのくらいの頻度で発生するか、または発生する頻度が低いかを予測する方法はありません。外部ネットワークは独自のドラマーに向かって行進します!)
ここで、上記のテーブルに基づく ListView を含むアクティビティ (同じプロセス内) があるとします。ListView が最初に入力された正確な瞬間に、もちろんバッキング テーブルと同期されますが、その直後 (または 2 つまたは 3 つ) に、外部デバイス ネットワークの変更により、テーブルが変更されます。サービス。
Service が ListView を更新する必要があることを Activity に通知する最善の方法は何ですか?
SO に関するいくつかの投稿を見てきましたが、そのアプローチは「アクティビティにブロードキャストレシーバーを登録し、サービスからブロードキャスト インテントを送信する」ように見えましたが、ローカル サービスには少しやり過ぎのようです。もっと簡単な方法はありませんか?
たとえば、Binder オブジェクトを介してローカルの Service オブジェクトへのハンドルを取得できるので、必要に応じてサービスによって呼び出されるアクティビティへの何らかのコールバックを登録できるのではないかと考えています。これはうまくいくように聞こえますか?(それとも袋小路に入るのか?)
あなたの洞察を楽しみにしています。
M