奥利奥:在后台调用时,startService()不会引发IllegalStateException

时间:2018-09-13 15:19:09

标签: android android-service android-8.0-oreo

根据Android Oreo中引入的background execution limits,当应用程序在后台运行时调用startService应该抛出Monitor.Wait。检查以下问题:Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent

我创建了一个针对Android Oreo的示例应用,该应用执行以下操作:

IllegalArgumentException

然后我启动应用程序,并在按下主屏幕按钮后立即将应用程序置于后台状态。但是没有抛出异常。怎么可能?我希望该应用在这种情况下会崩溃。

1 个答案:

答案 0 :(得分:2)

根据Google在background service limitations上的文档:

  

应用程序位于前台时,它可以自由创建和运行前台和后台服务。当应用进入后台时,它会显示几分钟的窗口,在该窗口中仍可以创建和使用服务。

通常,我发现窗口大约需要一分钟,但是对于其他人来说肯定有所不同。

使应用程序后台运行并查看类似以下内容后,查看您的总体设备日志(从命令行运行adb logcat或在Android Studio的Logcat窗口中关闭过滤器)。

  

09-26 13:25:37.150 4741 4756 W ActivityManager:由于应用程序空闲而停止服务:u0a267 -1m12s700ms com.example / .MyService

任何在此之后启动服务的请求都应导致异常。我猜想您需要将超时时间提高到一两分钟左右。