2

我在服务中有一个 AsyncTask,它获取 RSS 提要并将它们存储在 SQLiteDatabase 中。该服务从主 Activity 启动。我需要每隔 4 小时左右执行一次 AsyncTask 以提取 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<...> 
    {...}
}
4

1 回答 1

2

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

这不仅方便,而且还可以提高电池性能,因为您的应用程序不会在后台连续运行,只是为了每四个小时执行一次 AsyncTask。取而代之的是,Android 会在适当的时候运行您的应用程序,您可以开始工作,然后等待闹钟再次响起。

于 2012-09-22T06:30:45.610 回答