根据Android Oreo中引入的background execution limits,当app在后台时调用startService应该抛出 IllegalArgumentException
. 检查这个问题:Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent .
我创建了一个针对Android Oreo的示例应用程序,它执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startService(new Intent(MainActivity.this, MyService.class));
}
}, 5000);
}
然后我启动应用程序,然后按下主页按钮立即将应用程序置于后台状态 . 但是没有抛出异常 . 怎么会这样?在这种情况下,我希望应用程序崩溃 .
1 回答
根据谷歌关于background service limitations的文档:
一般来说,我发现窗口大概是一分钟左右,但对其他人来说肯定会有所不同 .
看看您的整体设备日志(从命令行运行
adb logcat
或关闭Android Studio中的过滤器's Logcat window) after you' ve背景应用程序并查找类似的内容:在此之后启动服务的任何请求都应该导致异常 . 我猜你需要将超时提升到接近一两分钟的时间 .