如图的代码,
各位,请问一下,在aidl项目中,客户端项目中开始用了startService来启动服务,它后面又执行了bindService来绑定服务,在android的AIDL项目中都只要通过bindService来绑定服务端的服务就可以了,为什么这里它要在开始时用startService来启动服务,请它这样做是为了什么?为什么它要总时用两个启动方式,这样做有什么好处?如果先用startService启动了服务端的服务(运行了onCreate方法),那么它在后面执行bindService方式时,它还会再一次运行onCreate方法吗?androidadil

解决方案 »

  1.   

    bind启动是绑定了一个通信信道,用start启动的时候这个信道没有绑定,这样就缺少了交互,而bind起到的作用是让服务和其他组件进行交互的。当你start启动后,走的是onstart方法,当你启动bind的时候,会运行onbind生命周期方法。不会oncreat两次
      

  2.   

     你说的这个我知道,但他为什么在前后两次启动?如果要绑定直接用bindService不就可以了吗?为什么之前还要startService启动一下?
      

  3.   

     你多看看这个Service功能就可以了啊,例如onStartCommand()有没有逻辑处理。如果没有的话,这个startService()可能是作者写错了吧。要辩证怀疑地学习。  有任何疑问,可以在Service里加Log看看。
      

  4.   

    onBindService绑定的服务生命周期等同于activity,想让service存活与后台,就必须startService