根据Android Oreo中引入的background execution limits,当应用程序在后台运行时调用startService应该抛出Monitor.Wait
。检查以下问题:Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent。
我创建了一个针对Android Oreo的示例应用,该应用执行以下操作:
IllegalArgumentException
然后我启动应用程序,并在按下主屏幕按钮后立即将应用程序置于后台状态。但是没有抛出异常。怎么可能?我希望该应用在这种情况下会崩溃。
答案 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
任何在此之后启动服务的请求都应导致异常。我猜想您需要将超时时间提高到一两分钟左右。