我构建了一个管理消息数据库并将其显示给用户的应用程序,我有一个基本连接到Web服务器并要求更新的服务。 即使应用程序关闭,我也需要该服务每分钟运行一次。
到目前为止,我写了以下代码:
protected void registerAlarm() {
Intent getUpdatesService = new Intent(this, UpdatesService.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, getUpdatesService, 0);
long firstTime = SystemClock.elapsedRealtime();
firstTime += 60 * 1000;
AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, 60 * 1000, sender);
}
我从显示消息的活动中调用registerAlarm()。 假设使用AlarmManager运行服务evry分钟,但它不起作用。 任何人都可以帮我解决问题吗?
答案 0 :(得分:1)
即使应用程序已关闭,我也需要该服务每分钟运行一次。
这在Android 6.0及更高版本上不实用。
任何人都可以帮我解决问题吗?
从战术上讲,问题在于您使用的是SystemClock.elapsedRealtime()
和RTC_WAKEUP
。那些不匹配。使用ELAPSED_REALTIME_WAKEUP
。
然而:
除非用户将您的应用添加到设置中的电池优化白名单
AlarmManager
在某些环境中根本不起作用,特别是Chrome OS上Android应用的当前开发者预览版(尽管我知道这是一个错误)
答案 1 :(得分:0)
你应该使用IntentService而不是Service,因为它在工作完成后自动终止,并且在后台线程上运行