0

サーバーからデータを取得し、それをリストビューなどのUIに投稿するシナリオを考えてみますが、これは進行中のアクティビティであり、停止することはありません。

taskA{ //fetches data over network

if(!update)
    fetch();//network operation

}

taskB{//using this data UI is updated at runtime just like feed.

if(update)
    show();//UI operation
}

taskAは、完了後に最初に開始します。taskBは、Aがスリープしている時間までに開始し、その逆も同様です。現在、私が直面している問題は次のとおりです。

  1. 両方の操作はワーカースレッドである必要があります
  2. 両方の操作は、アクティビティが有効になるまで循環します。
  3. ハンドラーを使用してUI操作をメインスレッドに送信すると、taskBが停止しているように見えます。

誰かがこれを機能させるためのデザインを私に提案できますか?

4

3 に答える 3

2

AsyncTaskあなたのために仕事をしています。Activityメインクラスの下の内部クラスとして作成できます。

http://developer.android.com/reference/android/os/AsyncTask.html

サンプルコード

private class YourTask extends AsyncTask<URL, Integer, String> {
     protected String doInBackground(URL... urls) {
         // Fetch Data (Task A)
         return "Result";
     }

     protected void onProgressUpdate(Integer... progress) {
         // Show progress
     }

     protected void onPostExecute(String result) {
         // Show UI after complete (Task B)
     }
}
于 2012-07-10T09:25:23.783 に答える
0

AsyncTaskあなたが探しているものです。サンプルコードについては、次のリンクを確認してください:http: //geekjamboree.wordpress.com/2011/11/22/asynctask-call-web-services-in-android/

于 2012-07-10T09:28:04.650 に答える
0

IntentServiceを使用して、サンプルコードを確認することもできます

Androidサービスは軽量ですが、セットアップがより複雑です。

AsyncTaskは非常に簡単ですが、多くの欠点と欠点があるため、お勧めしません。ローダーを調べることもできますが、AsyncTasksほど簡単ではありません。

于 2013-04-22T20:06:25.423 に答える