2011-06-24 84 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方法亲爱的.. –