美文网首页
清楚理解Service

清楚理解Service

作者: Kael_祈求者 | 来源:发表于2017-11-26 12:30 被阅读0次

    1.Service的start和bind状态有什么区别?

     提到生命周期,就得想到Service 有两种启动方式,分别如下:
    (1)直接startService,然后使用stopService关闭。此时生命周期
    startService-->onCreate()-->onStartCommand()-->stopService-->onDestort-->结束
    (2)绑定开启bindService,使用unbindService解绑关闭。此时生命周期
    BindService-->onCreate()-->onBind()-->UnBindService()-->onUnBind()-->onDestory()-->结束
    
    然而二者区别:
    (1)startService 和 stopService 只能开启和关闭,无法操作Service. bind 和unBind 是可以操作Service
    (2)start开启的Service.调用者退出后Servicer依然存在,bind开启的Service.调用者退出后,随着调用者销毁
    

    2.同一个Service,先startService,然后再bindService,如何把它停止掉?

    先调用unBindService 在调用stopService
    

    3.你有注意到Service的onStartCommand方法的返回值?不同返回值有什么区别?

    START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
    
    START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
    
    START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
    
    START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
    

    4.Service生命周期方法onCreate,onStart,onBind等运行在哪个线程?

     运行在主线程
    

    相关文章

      网友评论

          本文标题:清楚理解Service

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