我希望我的应用程序每小时访问一次数据库并从表中读取下一条记录,然后更新桌面小部件并发送通知。我知道有AlarmManager可以用来注册我的意图,但是当手机关机或重新启动时它们会被删除。如何安排我的Android应用程序每小时执行一些操作
是否有任何其他的Android类/服务,我会不断更新我的应用程序,即使当我重新启动我的手机?
感谢,
我希望我的应用程序每小时访问一次数据库并从表中读取下一条记录,然后更新桌面小部件并发送通知。我知道有AlarmManager可以用来注册我的意图,但是当手机关机或重新启动时它们会被删除。如何安排我的Android应用程序每小时执行一些操作
是否有任何其他的Android类/服务,我会不断更新我的应用程序,即使当我重新启动我的手机?
感谢,
看看演示应用提供了Android SDK中
http://developer.android.com/samples/RepeatingAlarm/index.html
的模样AlarmService_Service对于服务的实现,一旦警报被触发
将您想要在您的应用中执行的所有后台任务放在Services
后台执行任务。在服务中,您应该能够定义一个计时器,它会导致每x小时发生一次更新。
在小部件的onCreate()
中,启动该服务。每当widget开始生效时(例如手机在主屏幕上启动时),都会调用onCreate()
,并因此保证Service
始终处于运行状态。
希望这有帮助。
持久的服务是在市场上获得一星评价的单程票。 – CommonsWare 2010-09-12 19:44:12
不,我从来没有说过“永久服务”是一个好主意,但@marqss说他想要一个始终运行的服务......即使在电话重置之后。 – mtmurdock 2010-09-12 19:59:05
为了完整性,我在这里链接官方文档,重新引导的问题得到了解决。
http://developer.android.com/training/scheduling/alarms.html#boot
对于“但是他们当手机关机或重启删除”,你需要实现一个'BOOT_COMPLETED'接收器在重新启动后重新建立报警。如果你正在实现一个应用部件,你也可以选择在你的应用部件元数据中使用'android:updatePeriodMillis' - 这个报警会自动为你管理,但它不那么灵活。 – CommonsWare 2010-09-12 19:47:32
该示例似乎不再可以在线获得,而且显然也不适用于较新的SDK版本。但是,可以在这里找到类似的(也许甚至是相同的?)示例:https://code.google.com/p/android-lab/source/browse/trunk/android-lab/src/com/example/android /apis/app/AlarmService.java – peterp 2013-01-30 22:16:53