我有一个asyncTask,我想定期在后台重复操作,我的asynctask就是这样的:
new foo(someDetails).execute();
我怎么能做到这一点?
提前感谢。
答案 0 :(得分:5)
您可以使用TimerTask在periocally中调用assyncTask。
TimerTask:http://developer.android.com/reference/java/util/TimerTask.html
这里有例子:
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
//CALL YOUR ASSYNC TASK HERE.
new foo(someDetails).execute();
}
};
Timer timer = new Timer();
//DELAY: the time to the first execution
//PERIODICAL_TIME: the time between each execution of your task.
timer.schedule(timerTask, DELAY,PERIODICAL_TIME);
答案 1 :(得分:2)
使用Handler
final Handler handler = new Handler();
Runnable refresh = new Runnable() {
@Override
public void run() {
try {
//your staff
new foo(someDetails).execute();
} catch (NullPointerException e) {
Log.e(TAG, "" + e);
}
handler.postDelayed(this, 60 * 1000);
}
};
handler.postDelayed(refresh, 60 * 1000);
答案 2 :(得分:1)
您使用 AlarmManager 并创建服务,它将运行 asyncTask 。
使用闹钟管理器重复您的服务。
答案 3 :(得分:1)
Note: The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running. For normal timing operations (ticks, timeouts, etc) it is easier and much more efficient to use Handler.
http://developer.android.com/reference/android/app/AlarmManager.html
正如Android文档所说的那样,你应该使用AlarmManager或Handler来代替TimerTask。