H5W3
当前位置:H5W3 > Andriod > 正文

【android】Android Serbrpc 报告总结:衰老期与shoalReBind

start 和 bind 启动Service 的区别

在只使用一种启动方式的情况下,生命周期的区别。

  • Activity 调用 startService() 创建的Service的生命周期 与 Activity 无关。需要自己控制Service 销毁。
  • Activity 调用 bindService() 创建的Service的生命周期 与 Activity 有关,Activity销毁则 Service 销毁。 所有绑定的 Activity 都调用 unbindService 后,Service也会销毁。

回调方法的区别: 当点击按钮触发 启动或绑定 Service的时候

  • 多次调用 startService() 会回调多次 onStartCommand()。
  • 多次调用 bindService() ,只会回调一次 onBind()。
  • 如果使用 bindService() ,并且创建了 Binder对象并在Service 的 onBind 方法中返回。那么多次调用 bindService() ,会多次回调 ServiceConnection 的 onServiceConnected 方法。
  • ServiceConnection 的onServiceDisconnected()方法在连接正常关闭的情况下是不会被调用的, 该方法只在Service 被系统杀死,例如, 系统资源不足时。 才会回调,也是监听服务是否异常终止的一种方式。

Bind 方式下 onUnbind() 与 onRebind() 的使用

有一种情况 。通过 startService()创建Service,并且Service 的生命周期很长时 。某个Activity 先绑定了 bindService,然后再unbindService 。然后又 bindService 。然后又unbindService 。

第一个问题:第二次绑定回调的是 onBind 还 是 onReBind 呢?
答:

  • onUnbind() 返回 false 。第二次绑定,不会触发onReBind 。也不会触发onBind 。触发ServiceConnection 的 onServiceConnected (是不是很神奇。)
  • onRebind() 返回 true 。第二次绑定。触发 onReBind 。不触发 onBind。触发ServiceConnection 的 onServiceConnected

第一个问题:第二次调用 unbindService ,是否会回调 onUnbind?
答:

  • 当 onUnbind() 返回false的时候,不管多次绑定解绑,都不会重复回调onUnbind。只在第一次解绑时回调一次。
  • 当 onUnbind() 返回true 时 。多次绑定解绑都会回调 onUnbind。

本文地址:H5W3 » 【android】Android Serbrpc 报告总结:衰老期与shoalReBind

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址