1

Webサービスをポーリングして新しい情報を取得し、それをアプリケーションのsqliteデータベースに書き込むバックグラウンドサービスを備えたAndroidアプリケーションがあります。アプリケーションには、このsqliteデータベースからのデータを表示するリストアクティビティもあります。

基本的に、書き込みサービスからsqliteデータベースに新しいデータが入った場合に、リストを確認しながらリストを自動更新する必要があります。ある種の更新ボタンを提供することもできますが、自動更新されると便利です。それを行う簡単な方法はありますか?このサービスは、listactivityがサブスクライブしているイベントを発生させて、アダプターを無効にする必要がありますか?または、アダプタがカーソルなどに基づいており、基になるデータが変更されたときに自動的に更新される方法はありますか?これをアーキテクチャ的に考えて、最良で最も保守しやすい(そして開発が迅速な)方法を求めているだけです。これをはるかに簡単にする可能性を逃したかどうか私は興味があります。

ちなみに、私はAndroid用のMonoを使用しています(会社のポリシーであり、私の選択ではありません)。

4

2 に答える 2

2

基本的に、サービスの書き込みから新しいデータがsqliteデータベースに入った場合、リストを見ながら自動更新する必要があります。

カスタムブロードキャストをリッスンできるリストを含むリストに、BrodcastReceiveronResumeコールバックで)動的に登録されたものを実装できます。ActivityこれBroadcastReceiverがカスタム ブロードキャストを受信すると、カーソルを更新し、notifyDataSetChanged を呼び出します。つまり、リストを参照します。新しいService値を受信するとデータベースに挿入し、そのタスクが完了するとブロードキャストを送信できます。これは、関心のあるオブザーバーに新しいデータが利用可能であることを通知するカスタム ブロードキャストです。Activityこれにより、アクティビティがフォアグラウンドにある場合にレシーバーがトリガーされます。

Androidがコードを提供するかどうかはわかりませんがMono、上記のアイデアから何かを実装できるはずです。

于 2012-10-10T16:10:05.067 に答える
0

Handler クラスを使用してリストを更新できます。新しいデータがあるときにバックグラウンド サービスからアクティビティにメッセージを送信し、Handler クラスの handleMessage() メソッドでリストを更新できます。

于 2012-10-10T16:32:23.493 に答える