Service 服务有关细节

今天发现通过 startService 方法 开启的Service在程序异常崩溃之后,发现service 里面逻辑代码又重新走了一遍。造成异常

想到startCommand 方法中有三个返回值跟service 异常kill 自动重启有关,但是代码里并未重写onstartCommand方法

那么它的默认默认返回值是什么?

查看源码:

  public @StartResult int onStartCommand(Intent intent, @StartArgFlags int flags, int startId) {
        onStart(intent, startId);
        return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY;
    }
mStartCompatibility = getApplicationInfo().targetSdkVersion
                < Build.VERSION_CODES.ECLAIR;
如果当前的targetSdkVersion 小于 Android 2.0 版本 则为 
START_STICKY_COMPATIBILITY  否则 为START_STICKY

关于参数返回值解释 

Service 服务有关细节_第1张图片


最后 通过bindService 不会走onStartCommand方法,并且 服务异常kill 也不会重启

android 8.1 发现一问题: 当 程序发生异常终止时候,service 自动重启后,走oncreate() 方法 ,而再次打开app时 调用startService 方法竟然还会走一遍 oncreate 方法? 前提是service 重启之后还在运行当中  ,按道理来讲当 service 已经存在时候onCreate方法只会走一次,暂时想不明白为什么? 而在android 4.4 中 是正常的逻辑 onCreate 只会走一次



你可能感兴趣的:(Service 服务有关细节)