如果没有“exit()”方法,如何干净地取消绑定服务

时间:2012-03-23 15:23:03

标签: android service android-ndk android-context

服务(S1)绑定在“普通类”C的构造函数中(即C没有任何生命周期方法,如(onCreate(),onDestroy()等)使用Intend。上下文提供在C构造函数中的构造时间.C由其他服务(Sx)实例化,使用它们作为新C(上下文)的参数。实际上,这与使用它们各自的上下文是相同的。我猜。

Sx1 ->
      C -> S1
Sx2 ->

问题是:从S1解除绑定的最佳方法/位置是什么?

  1. 由于C中没有生命周期方法,我应该在C中创建一个“人工”onDestroy()方法,一旦调用了Sx的onDestroy方法,就会调用它吗?我不喜欢这个,因为我很懒,可能会因为复杂性的增长而忘记在某个时间点调用onDestroy()方法。
  2. 或者我可以依赖这样的事实(不知道是否真的发生)Android将管理一个干净的生命周期并在Sx或其上下文被破坏后“自动解除绑定”?

1 个答案:

答案 0 :(得分:0)

  

服务(S1)绑定在“普通类”C

的构造函数中

不是真的。 Sx1和Sx2与S1结合。他们负责这些绑定。无论出于何种原因,您恰巧将bindService()调用放入C语言中。

  

从S1取消绑定的最佳方法/位置是什么?

当S1完成时,Sx1和Sx2必须从S1解除绑定。无论是解绑自己还是在C上调用方法解除绑定,Sx1和Sx2都负责绑定,因此负责取消绑定。