【问题标题】:Android: How to schedule a Background Service to run repeatedlyAndroid:如何安排后台服务重复运行
【发布时间】:2012-09-22 06:27:16
【问题描述】:

我在服务中有一个 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<...> 
    {...}
}

【问题讨论】:

    标签: java android


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Raghav 会尝试一下。还有一件事,如果我的 FeedReader 类在这种情况下扩展了“Service”或“IntentService”,会有什么不同吗?这两种方法有什么优势吗?
    • 我不太熟悉 Service 与 IntentService,但我认为 IntentService 在这种情况下会更好,因为它是专门为与 Intent 一起使用而设计的。
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2021-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多