Android Service 生命周期

作者: zhangxuanchen | 来源:发表于2017-01-22 22:05 被阅读67次

    service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径:

    A started service
    被开启的service通过其他组件调用 startService()被创建。这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止它。当service被停止时,系统会销毁它。

    A bound service
    被绑定的service是当其他组件(一个客户)调用bindService()来创建的。客户可以通过一个IBinder接口和service进行通信。客户可以通过 unbindService()方法来关闭这种连接。一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。

    Service生命周期(来自网络)

    然而这两条路径并不是完全分开的,他们可以混合存在。

    就是说你可以和一个已经调用了startService(),而被开启的service进行绑定。例如一个后台音乐service可能因调用 startService()方法而被开启了。稍后,可能用户想要控制播放器或者得到一些当前歌曲的信息,可以通过bindService()将一个activity和service绑定。这种情况下,stopService()或 stopSelf()实际上并不能停止这个service,除非所有的客户都解除绑定。(下图描述了这种情况)

    Service混合生命周期(来自网络)

    提示:
    如果Service解绑的时候onUnbind()方法返回为true,(注意看图,要客户端全部解绑才行)那么下一次客户端绑定的时候Service会调用onRebind(Intent intent),客户端仍然会在它的onServiceConnected()回调方法中得到 IBinder 对象。

    相关文章

      网友评论

      本文标题:Android Service 生命周期

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