2011-06-24 83 views
0

我想在1分鐘內每5秒鐘後調用一次Web服務。意思是在1分鐘內我想打電話給webservice 12次。我想這樣做異步。每5秒異步執行一次Android Web服務

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

一個很簡單的方法就是實現一個TimerTask來創建和執行你的AsyncTask。使用您的上述AddStringTask:

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

請注意,即使你在一個服務實現這一點,服務代碼將仍然是主要的GUI線程上運行,所以你需要一個單獨的線程或異步任務做阻止你的操作。

+0

計時器基本上掛我的活動屏幕。 –

+0

我不確定計時器如何阻止您的主線程,您在哪裏構建它? – Nick

+0

在Oncreate方法親愛的.. –