2011-07-24 9 views
1

私は本を介してAndroidを学習しており、何かを確認したいと思うでしょう。Android:Multiple with AsyncTask

それはこのようなものになりブックによるとAsyncTask使用:

main class 
{ 
new AddStringTask().execute(); 
    } 

    class AddStringTask extends AsyncTask<Void, String, Void> { 
@Override 
protected Void doInBackground(Void... unused) { 
    // Do something 
    SystemClock.sleep(333); 
     return(something); 
    } 
@Override 
    protected void onProgressUpdate(String... item) { 
     // update something 

} 
     } 

いくつかのものを行うには1つのバックグラウンドスレッドを作成します。 スレッド(例えば、300、500、1000ミリ秒)を別々に実行したい場合は、 を追加する必要があります。

または、この1つのサブクラスを使用して、異なる時間に複数のスレッドを起動する方法はありますか?

ありがとうございます!

答えて

3

さらにサブクラスを作成する必要があります。本当ですか?

同じAsyncTaskを再度実行するには、new AddStringTask()インスタンスを作成します。これは、他のインスタンスとは異なる新しいインスタンスであり、各インスタンスには独自のスレッドがあるため、これは機能します。 これらは相互に依存しません

ただし、タイマーの仕組みは自分で実装する必要があります。

+0

あなたは私に私が「タイマーメカニズム」を実装する方法の例を与えることができますか?ありがとう! – Ryan

+1

@ Ryan:たとえば、[CountDownTimer'](http://developer.android.com/reference/android/os/CountDownTimer.html)を使用します。そこでは、特定の要件に応じて、どれくらいの時間を確認したり、新しいタスクを開始したりすることができます。 – Wroclai

1

同じAsyncTaskを使用して、同じスレッドから異なる進捗状況を公開することもできます。言ってみましょう:

protected Void doInBackground(Void... unused) { 
    ... 
     System.sleep(500); 
     publishProgress(x); 
     System.sleep(500); 
     pulbishProgress(y); 
    } 

 protected void onProgressUpdate(String... progress) { 
     myLabel.setText(progress[0]); 
    } 
+0

ありがとう!それも同様に働いた – Ryan