当前位置:   article > 正文

startForegroundService失败问题解决方法_foregroundservicedidnotstartintimeexception

foregroundservicedidnotstartintimeexception

android studio运行 没有activity的service服务时,出现ANR
ActivityManager: ANR in com.device.idea.study
PID: 14267
Reason: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{64d96a1 u0 com.device.idea.study/.FirstService}

该服务是通过adb shell am start-foreground-service -n com.device.idea.study/com.device.idea.study.FirstService 来运行的,经过查资料得知startForegroundService运行后 10秒内没有调用 startForeground的话,会出现ANR。于是在service的oncreate中加入了startForeground的调用。

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "on create");
        Notification notification = new Notification.Builder(getApplicationContext(), "study").build();
        Log.i(TAG, "startForeground");
        startForeground(1, notification);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后再次adb shell运行,依然出现上述报错,发现onCreate之后,10秒内还是没有调用到startForeground接口。仔细排查日志发现: onCreate之后立马被stop了。应用在没有完成启动前台服务之前不能调用stop 或 stopSelf。
在这里插入图片描述
网上没有找到异常stop的解决办法,并且该服务只是本地调测一下,因此想到一个投机取巧的方法:

adb shell am start-foreground-service -n com.device.idea.study/com.device.idea.study.FirstService

adb shell am startservice -n com.device.idea.study/com.device.idea.study.FirstService

调用start-foreground-service 之后的10秒内,再次调用startservice 命令。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/384184
推荐阅读
相关标签
  

闽ICP备14008679号