我在IntelliJ CE 2017.2上创建了一个新的Android项目并得到了this error。我按照答案中的描述添加了maven部分。
当我运行使用新项目创建的默认应用程序时,我收到错误
执行时出错:am startservice com.test.myapp / com.android.tools.fd.runtime.InstantRunService
启动服务:Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.test.myapp / com.android.tools.fd.runtime.InstantRunService}
错误:app处于后台uid null
我仍然可以在手机上手动打开应用程序并且它可以正常运行,但它不会自动启动并收到错误消息。
答案 0 :(得分:10)
我使用android api 26/27(Oreo)看到了这个错误。在奥利奥,有新的background execution limits。 tl; dr你应该在前台运行服务。
使用adb开始使用服务,请使用adb shell am start-foreground-service
而不是adb shell am startservice
。
答案 1 :(得分:2)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
}
else {
context.startService(intent);
}
重要服务启动后,必须在5秒内调用Service.startForeground()
。显而易见的地方是onCreate