安卓服务背景安卓奥利奥



在我的Android项目中,我创建了一个自定义时钟小部件,其中包含一个包含广播接收器实例和一个意图过滤器的服务。广播接收器在每次到达ACTION_TIME_TICK时都会提供小部件的更新。当在gradle中将targetSdkVersion设置为25时,这非常有效。但是,如果我的目标是 sdk 27,服务会在几分钟后停止。我已经阅读了有关 Android O 中后台执行限制的文档,但我找不到任何对我的项目有用的方法。你有什么建议吗?

您可以尝试几件事,当协同使用时,应该能够切断所有空闲/待机/打瞌睡模式(无论操作系统版本如何(。

  1. 使用WakefulBroadcastReceiver而不是普通BroadcastReceiver。请确保包含正确使用它的WAKE_LOCK权限。
  2. 使用 setExactAndAllowWhileIdle() 方法(在 API 23 及更高版本上(为接收方调度 Intent:

    if (Build.VERSION.SDK_INT < 23) {
        if (Build.VERSION.SDK_INT >= 19) {
            setExact(...);
        }
        else {
            set(...);
        }
    }
    else {
        setExactAndAllowWhileIdle(...);
    }
    

最新更新