• bug--service--Caused by java.lang.SecurityException: Unable to start service Intent { }:user 0 is restricted


    http://bbs.coloros.com/thread-174655-1-1.html

    急!!Service在OPPO系列手机下无法启动,寻求帮助

    你好,我是网易邮件事业部1元夺宝开发工程师,最近三个版本发现一个崩溃很怪异,因为97%的奔溃都发生在OPPO机型,而且OPPO机型里85%是R7系列,以下是错误日志,麻烦童鞋们帮忙看看,谢谢! Fatal Exception: java.lang.RuntimeException: An error occured while executing doInBackground() at com.netease.mail.oneduobaohydrid.base.BaseAsyncTask$3.done(BaseAsyncTask.java:95) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) at java.lang.Thread.run(Thread.java:818) Caused by java.lang.SecurityException: Unable to start service Intent { cmp=com.netease.mail.oneduobaohydrid/.service.OneService }: Unable to launch app com.netease.mail.oneduobaohydrid/10057 for service Intent { cmp=com.netease.mail.oneduobaohydrid/.service.OneService }: user 0 is restricted at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1769) at android.app.ContextImpl.startService(ContextImpl.java:1742) at android.content.ContextWrapper.startService(ContextWrapper.java:527) at com.netease.mail.oneduobaohydrid.service.OneService.start(OneService.java:102) at com.netease.mail.oneduobaohydrid.OneApplication.init(OneApplication.java:207) at com.netease.mail.oneduobaohydrid.base.BaseApplication$1.doInBackground(BaseApplication.java:84) at com.netease.mail.oneduobaohydrid.base.BaseApplication$1.doInBackground(BaseApplication.java:75) at com.netease.mail.oneduobaohydrid.base.BaseAsyncTask$2.call(BaseAsyncTask.java:83) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) at java.lang.Thread.run(Thread.java:818)

    你好,我们工程师看了一下,提出了一些问题:

    OPPO手机内置有耗电管理的功能,可能该应用服务在后台启动时被判断为耗电的一种操作行为;
    但是根据你的上面提交的资料,这个问题没有详细完整的Log或复现路径,不知道该应用是被OPPO手机内的耗电管理判断是哪种类型耗电,所以暂时无法提供方法。 
    理论上如果该应用服务是合理地使用就不会被判断耗电。 
    所以希望有完整的log以及复现路径提供给我们。

    另一种方法是,你们可以尝试自己在启动服务时捕获异常,不上报,因为OPPO手机内对耗电管理的限制对他们的正常使用没有影响。

    请问跟 APP 使用了 multi-dex 有关系么?
    你们的 rom,启用了 ART 虚拟机么?

    解决方法:

    @ALL ,不好意思让大家久等了。
    经过和OPPO工程师沟通,这个问题的原因是OPPO手机自动熄屏一段时间后,会启用系统自带的电量优化管理,禁止一切自启动的APP(用户设置的自启动白名单除外)

    所以,类似的崩溃常常集中在用户休息之后的夜里或者凌晨,但是并不影响用户平时的正常使用。

    至于会出现user 0 is restricted,我觉得是coloros系统电量优化管理做得不好的地方。

    对coloros官方的处理建议:既然禁止自启动,那么干脆直接force stop对应的进程,而不是抛出RuntimeException来让开发者买单。

    对开发者处理建议:在服务启动的地方进行try catch防止崩溃即可(也是“1元夺宝”APP目前的处理方式)

  • 相关阅读:
    批量给对象属性赋值
    判断linq语句结果是否为空的方法
    linq var出来的object取值问题
    LinQ转换运算符OfType<T>
    C#退出的几种方式
    return的用法
    扩展文字
    Timer的使用方法
    通过16道练习学习Linq和Lambda
    VS2010 无可用源
  • 原文地址:https://www.cnblogs.com/awkflf11/p/6075244.html
Copyright © 2020-2023  润新知