bindService原理

1,606 阅读1分钟

bindService流程

  • 应用调用bindService将IServiceConnection传递到AMS(AMS会保存IServiceConnection)。
  • 等到Service启动AMS会回调IServiceConnection的connected方法(IServiceConnection持有ServiceConnection的引用)。
  • IServiceConnection和ServiceConnection不是一对一关系。Context和ServiceConnection不同都会组成不同的IServiceConnection。

  • AMS里面每一个service都会对应一个ServiceRecord。
  • ServiceRecord里面包含一个或者多个IntentBindRecord。
  • IntentBindeRecord里面对应一个或者多个AppBindRecord。
  • AppBindRecord里面包含一个或者多个ConnectionRecord。

Service的onRebind()方法什么时候会调用?

Service中onRebind方法被调用,只要符合两个必要条件就行

  • 服务中onUnBind方法返回值为true
  • 服务对象被解绑后没有被销毁,之后再次被绑定

参考