在单独的线程中运行服务并每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?