在我的Android项目中,我创建了一个自定义时钟小部件,其中包含一个包含广播接收器实例和一个意图过滤器的服务。广播接收器在每次到达ACTION_TIME_TICK时都会提供小部件的更新。当在gradle中将targetSdkVersion设置为25时,这非常有效。但是,如果我的目标是 sdk 27,服务会在几分钟后停止。我已经阅读了有关 Android O 中后台执行限制的文档,但我找不到任何对我的项目有用的方法。你有什么建议吗?
您可以尝试几件事,当协同使用时,应该能够切断所有空闲/待机/打瞌睡模式(无论操作系统版本如何(。
- 使用
WakefulBroadcastReceiver
而不是普通BroadcastReceiver
。请确保包含正确使用它的WAKE_LOCK
权限。 -
使用
setExactAndAllowWhileIdle()
方法(在 API 23 及更高版本上(为接收方调度 Intent:if (Build.VERSION.SDK_INT < 23) { if (Build.VERSION.SDK_INT >= 19) { setExact(...); } else { set(...); } } else { setExactAndAllowWhileIdle(...); }