Android:如何安排后台服务重复运行

时间:2012-09-22 06:27:16

标签: java android

我在服务中有一个AsyncTask,它获取RSS提要并将它们存储在SQLiteDatabase中。该服务从主Activity开始。我需要执行AsyncTask,然后每隔4个小时左右执行一次,以获取RSS源。我尝试使用TimerTask如下所示,但这似乎不起作用。后台任务只运行一次。关于如何最好地实现这种情况/任何替代方案的任何想法?

public class FeedReader extends Service{

    private void getFeedsRegularly() {
        timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
        handler.post(new Runnable() {

        @Override
        public void run() {
            new BgTask().execute(feedURL);

        }
            });
            }
    }, 0, UPDATE_INTERVAL);
    }

    private class BgTask extends AsyncTask<...> 
    {...}
}

1 个答案:

答案 0 :(得分:2)

对于这样的设定时间表,您应该使用AlarmManager。您可以使用它将应用程序设置为每4小时运行一次。

这不仅是方便,而且还可以提高电池性能,因为您的应用不会在后台持续运行,只是为了每四个小时制作一次AsyncTask。相反,Android将在时机成熟时运行您的应用程序,您可以完成工作,然后等待闹钟再次启动。