2011-06-23 11 views
0

私が書き込んだ(JSONデータを返す)Webサービスを照会するアプリケーションを作成しました。私のアプリは現在、AsyncTaskを使ってWebサービスコールを処理し、受け取ったデータでTableLayoutを更新します。私は定期的(毎秒)にこのWebサービスを呼び出して、DBにデータを表示したいと思っています。どのようにUIスレッドブロックを持たないでこれを行うことができますか?AndroidでWebサービスをリアルタイムで照会する

現在のところ、ユーザーは「go」ボタンを押して、AsyncTaskはリクエスト処理中に「読み込み中」ダイアログを表示します。一度goボタンを押してレイアウト内のデータをリフレッシュさせたいと思います。私はこれを設計する最良の方法が何であるか分かりません。

答えて

1

これは、毎秒新しいAsyncTaskを作成することをお勧めしません。これは、多くのオブジェクトの作成とそれに対応するメモリの収集をもたらすためです。

代わりに、AsyncTaskを作成して、Webサービスからの各要求がいくつかの内部データ構造を更新した後にpublishProgress()を呼び出し、適切な時間待機してから、Webサービスに新しい要求を行います。 onPublishProgress()のコードでは、内部構造が使用されている場合(ここではロックを使用してアクセスを同期することを忘れないでください)、UIをリフレッシュするために、要求から新しい情報を取得する必要があります。

また、AsyncTaskには、Activityがループから脱出するように呼び出すことができるメソッドまたは変数が必要です。

+0

ありがとうございます。新しいAsyncTasksの定数作成でメモリを浪費することを避けるために、このようなものを実装する可能性があります。 –

0

1秒ごとに新しいAsyncTask要求を開始できるHandlerを使用できます。

関連する問題