【发布时间】:2014-01-16 14:39:27
【问题描述】:
我一直致力于在 Android 上循环 AsyncTask。我使用了一位用户提出的想法,我想出了这个:
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);
}
我在我的 Activity 的 onCreate() 方法上调用 loopAsyncTaskGetter(),我希望在 30 秒内完成一次,然后再一次。对我来说奇怪的是,有时它会工作一次 30 秒,有时它会完成 f.e. 5 秒内 3 次,更频繁。谁能告诉我为什么它会这样工作?我哪里做错了?
亲切的问候!
【问题讨论】:
标签: android android-asynctask oncreate timertask