将我的应用程序更新为目标 API 27(之前为 25)后,我遇到了许多来自用户的 ANR,但我无法重现。它们似乎与 Oreo 后台执行限制有关,并带有 ANR 消息
Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{73bc351 u0 com.xxx.xxxx/.player.PlayFileService}
但是,我不会在代码中的任何地方调用 Context.startForegroundService()
。有哪些原因可能会生成此 ANR,但这些原因不是直接调用此方法的结果?
最佳答案
就我而言,即使我没有打电话 Context.startForegroundService()
直接调用它是因为我的音乐应用程序将进入后台并且该服务将被系统破坏。然后,当用户在几分钟后按下媒体按钮恢复播放时,系统将重新启动该服务,并且由于该应用程序位于后台,因此会进行该调用。我确实打过startForeground()
最终但这是经过一系列配置之后的。我添加了对 startForeground()
的调用onCreate()
开头我的服务出现空白通知,并且我的所有 ANR 都消失了。
关于android - Context.startForegroundService() ANR,但没有实际调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595247/