在android中定期重复AsyncTask后台操作

时间:2014-09-30 10:23:27

标签: android

我有一个asyncTask,我想定期在后台重复操作,我的asynctask就是这样的:

new foo(someDetails).execute();

我怎么能做到这一点?

提前感谢。

4 个答案:

答案 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。