在单独的线程中运行服务并每10分钟唤醒一次?

我的应用程序将每10分钟访问一次web服务以访问数据(即使应用程序不在前台)。 什么是最好的方式来做到这一点?

首先,我需要在海洋线程中启动我的服务吗? 并且如何使它每10分钟从服务器获取更新? 有些人说handler.postdelayed和一些使用Alarm Manager。 哪一个更好,我们是否有一些例子。


如果更新将在您的应用程序运行时发生,您可以使用Timer,如其他答案中所建议的,或者更新的ScheduledThreadPoolExecutor
如果您的应用程序即使在未运行时也会更新,您应该使用AlarmManager

警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。

请注意,如果您计划在应用程序关闭时进行更新,则每十分钟一次就会频繁发生,因此可能会耗费太多电量。


Jeffrey Sharkey在Google IO 2009上就该主题做了精彩的演讲,敬请关注第21张幻灯片。

这应该能够很好地介绍这个主题的最佳实践。

摘录:不要使用处理程序或定时器,使用AlarmManager和setInexactRepeating(..)


实际上,我用Timer完全相同的情况下,它适用于我。

timer = new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {

        synchronized public void run() {

             here your todo;
            }

        }}, 60000, 60000);
链接地址: http://www.djcxy.com/p/38951.html

上一篇: Running a service in separate thread and waking it every 10 minutes?

下一篇: Run task as soon as possible if missed