【发布时间】:2017-06-01 14:22:35
【问题描述】:
来自我的活动的onCreate(),
我正在尝试通过以下代码启动服务:
Intent intent = new Intent();
intent.setClassName(SERVICE_PKG_NAME, SERVICE_NAME);
context.startService(intent); //context = MainActivity.this
但是,我收到以下异常:
java.lang.IllegalStateException: Not allowed to start service Intent (service-name) : app is in background
知道这可能是什么原因吗?现在坚持了几个小时。
【问题讨论】:
-
您在哪个版本的 Android 上进行测试?另外,你能发布整个 Java 堆栈跟踪吗?
-
@CommonsWare Android -O。来自developer.android.com/preview/behavior-changes.html 似乎是新添加的。 bold 现在,如果面向 Android O 的应用在不允许创建后台服务的情况下尝试使用 startService() 方法,则会引发 IllegalStateException。**bold**
-
您的错误消息与我从 O 看到的一致,这就是我询问设备版本的原因。您尝试在何时何地启动该服务?
-
“所以系统不允许在后台启动应用程序服务”——这没有任何意义。应用程序 A 在前台。它应该能够启动其核心内容的服务,包括 App B 的任何服务。无论如何,先尝试绑定到服务,然后在服务绑定后为同一服务调用
startService()。 -
也许 A、B 和 C 都应该是一个应用程序。无论如何,您可以尝试在
Context上调用startForegroundService()而不是startService()。
标签: android android-service android-8.0-oreo