Service详解

2017-07-22  本文已影响110人  熹哥
Service组件详解.png

生命周期

service的生命周期相对activity来说比较简单,一个servcie的生命周期从创建到销毁有两条路径:

service_lifecycle.png

如需了解Bound Service的详细信息,请参阅 Bound Service详解

基本知识点细节

  1. 同一个Service,onCreate()和onDestroy()只会走一遍。
  2. 每次调用onStartService()方法,都会回调onStartCommand(Intent intent, int flags, int startId)方法。
  3. bindService()方法的回调onServiceConnected()是异步的。
  4. 只有第一次调用bindService()方法会回调onBind(Intent intent)的方法。
  5. 同一个Activity实例多次重复调用bindService()方法,只会创建一次连接(只会bind一次),也就是只有第一次会回调onServiceConnected()方法。
  6. 如果某个Activity已经bindService了,必须在Activity.onDestory()生命周期或之前unbindService,否则抛出以下异常:
${ActivityName} has leaked ServiceConnection ${ServiceConnectionName} that was originally bound here
  1. 只有所有client都调用了unbindService才会走onBind()生命周期回调,如果只是一个bound service,此时才会走onDestroy生命周期。
  2. 如果一个service即使start service又是bound service,只有所有的client都解绑了,在调用stopService或者stopSelf才会走onDestroy生命周期。
  3. 如果Service实现onUnbind返回true,且一个started service 第一次bind之后再unbind,第二次bind时不会走onBind生命周期,而是走onRebind()的生命周期。
上一篇 下一篇

猜你喜欢

热点阅读