android报错java.lang.IllegalStateException-Not-allowed-to-start-service-Intent
目录
android报错:java.lang.IllegalStateException: Not allowed to start service Intent
android报错:java.lang.IllegalStateException: Not allowed to start service Intent
错误
今天测试扔我一条崩溃信息:
Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=xxx }: app is in background uid UidRecord{xxx u0a136 CEM idle procs:1 seq(0,0,0)}
这能难得倒我吗?
一看就知道是后台服务启动错误,把服务放置前台就可以了,easy
其实谷歌了一下下。。。。
问题是Android8.0以上不允许创建后台服务。
解决方法
1
最简单就是直接开启前台服务
在你的服务类的onCreate里将服务设置到前台就可以了
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForeground(1, new Notification());
}
当然了这种方法会在Android5.0和6.0的手机的状态栏上显示啥啥啥正在运行。
有些人可能不想要。
那就参考下面这个方法
2
来源于这里的方法
先是修改你的manifest文件里的Service配置
<service android:name=".YourService"
android:permission="android.permission.BIND_JOB_SERVICE"/>
然后将你的service类的修改继承,改成
extends JobIntentService
然后添加以下代码
public static final int JOB_ID = 1;
public static void enqueueWork(Context context, Intent work) {
enqueueWork(context, YourService.class, JOB_ID, work);
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
// your code
}
而启动服务就修改成如下方法。
YourService.enqueueWork(context, new Intent());
不过我测试了下,在onStartCommand()里的内容不执行。还没找到什么原因。
希望知道的朋友可以帮忙解析下。