美文网首页
Android Service.onStartCommand()

Android Service.onStartCommand()

作者: b7cda9616c52 | 来源:发表于2017-05-09 09:41 被阅读386次

    这篇文章用于记录我研究 Android 服务里的 [onStartCommand(Intent, int, int)](https://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)) 方法的结果。

    public int onStartCommand(final Intent intent, int flags, final int startId) {}
    

    该方法如上,其中有三个参数:intent 用于调用的时候传递数据进来,flags 用于标识本次调用是否为重复调用,startId 是系统分配的 id,每次启动都会递增,可以理解为任务 id。

    onStartCommand flags 参数

    • 若重新传入之前没有结束的任务,其值为
      Service.START_FLAG_REDELIVERY = 1
    • 没有收到返回的情况,再次调用该方法,其值为 Service.TART_FLAG_RETRY = 2

    onStartCommand 返回值

    以下值皆是 Service 的静态常量。

    • START_STICKY_COMPATIBILITY 兼容低版本,与 START_STICKY 作用相同,但不保证每次都能重启成功。
    • START_STICKY 进程被杀死后,会自动重启服务,并回调 onStartCommand 方法,但是 Intent 可能为空,程序必须做判断,否则崩溃。
    • START_NOT_STICKY 进程被杀死后,重启 APP 的时候不会重建服务。
    • START_REDELIVER_INTENT 在服务运行的过程中,进程被杀死后,再次启动程序时会自动重启 Service,并回调该方法,继续执行未完成的任务。使用该返回值的时候,必须手动停止任务,管理服务的生命周期,否则容易出现内存泄露。

    相关文章

      网友评论

          本文标题:Android Service.onStartCommand()

          本文链接:https://www.haomeiwen.com/subject/kwpdtxtx.html