0
我一直工作在Android上循環的AsyncTask執行。我使用的用戶一個提出一個想法,我想出了這個:的TimerTask上不平等的時間間隔
public void loopAsyncTaskGetter(){
final Handler handler = new Handler();
final Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new GetTasksAsync().execute(getIntent().getStringExtra(MainActivity.EXTRA_ID));
} catch (Exception e) {
}
}
});
}
};
timer.schedule(doAsynchronousTask, 500, 1000*30);
}
我的AsyncTask繼承類看起來像這樣:
class GetTasksAsync extends AsyncTask<String, Void, Void>{
ProgressDialog dialog;
@Override
protected void onPreExecute(){
//dialog stuff
super.onPreExecute();
}
@Override
protected Void doInBackground(String... data) {
//this method below returns JSON String from my PHP file
String jsonData = Webserv.getTaskJson(data[0]);
try {
JSONArray jsonArray = new JSONArray(jsonData);
for(int i=0; i<jsonArray.length(); i++){
//some json parsing, doesn't matter
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v){
dialog.dismiss();
myAdapter.notifyDataSetChanged();
super.onPostExecute(v);
}
我呼籲我的onCreate loopAsyncTaskGetter()()的方法活動和我希望有30秒一次完成的事情,並再次。對我來說奇怪的是,有時候它會在30秒內運行一次,有時它會完成f.e. 5秒內3次,更常見。有人能告訴我爲什麼這樣工作嗎?我在哪裏犯了一個錯誤?
親切的問候!
好,但如果我取消計時器,它不是在循環要去工作。我只是做了它,因爲好奇,它得到了只執行一次,如我所料:(但是,感謝的答覆! – user2987001
多少次你叫loopAsyncTaskGetter()方法?如果你調用它只有一次,那麼,問題是你的異步任務有時需要更長的時間,所以有時你犯了一個新的AsyncTask調用前一個之前結束。正因爲如此,你會看到在很短的時間內多次更新。 – ayorhan
是啊,我把它只有一次,@ onCreate()方法。一執行持續像第二類的東西,所以我覺得 – user2987001