2011-06-24 16 views
0

1分で5秒ごとに1つのWebサービスを呼び出したいとします。 1分で意味することは、私はWebサービスを12回呼びたいと思う。私はこれを非同期的にやりたい5秒ごとにAndroidウェブサービスを非同期に呼び出します。

class AddStringTask extends AsyncTask<Void, String, Void> { 

    private final ProgressDialog dialog = new ProgressDialog(HomeScreen.this); 

    protected void onPreExecute() { 

    } 

    protected Void doInBackground(Void... unused) 
    { 

     return(null); 
    } 

    @Override 
    protected void onPostExecute(Void unused) { 

      this.dialog.dismiss(); 

    } 
} 

これはこのコードで行うことができます。 bt doinbackgroundは一度だけ実行されます。 doInBackgroundメソッドでもタイマーを実装することはできません。むしろ、その後

答えて

1

本当に簡単な方法は、AsyncTaskを作成して実行するTimerTaskを実装することです。あなたの上記AddStringTaskを使用する:

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 
    public void run() { 
     new AddStringTask().execute(); 
    } 
}, 0, 5000); 

あなたがサービスでこれを実装しない場合でも、サービスコードは、まだメインGUIスレッドで実行されることに注意してください、あなたが行うには別のスレッドや非同期タスクを必要としてください。あなたのためのブロック操作。

+0

タイマーは基本的に私の活動画面をハングします。 –

+0

タイマーがメインスレッドをブロックする方法がわかりません。どこに構築していますか? – Nick

+0

Oncreateメソッドでは.. –

関連する問題