主题:Android与服务进程内通信
调用bindService()方法时:
1. 服务若没有创建
s.onCreate()--às.onBind()-à服务于访问者绑定在一起
如果访问者退出:
s.onUnBind()às.onDestroy();
2.服务已经创建
不会导致调用多次服务的创建(onCreate()和绑定(onBind()),如若解除绑定可调用unbindService()方法,系统同样会调用服务的onUnbind()-àonDestory()方法。
onBind()只有调用bindService()方法才会触发方法的调用,如果服务已经被绑定,该方法不会执行多次
onUnbind()方法只有调用unbindService()方法才会导致该方法的执行。
电话录音服务只是在服务内部进行录音以及调用PhoneManager对象,许多时候服务在处理业务后,需要和其它程序进行通信.startService()和stopservice()使用使用者和服务之间没有交互的情况,否则应该使用bindService()和unbindService()方法。
调用bindService()方法时:
1. 服务若没有创建
s.onCreate()-às.onBind()-à服务于访问者绑定在一起。
如果访问者退出:
s.onUnBind()-às.onDestroy();
2.服务已经创建
不会导致调用多次服务的创建(onCreate())和绑定(onBind()),如果解除绑定可调用unbindService()方法,系统同样会调用服务的onUnbind()-àonDestroy()方法。
onBind()只有调用bindService()方法才会触发该方法的调用。如果服务已经被绑定,该方法不会被执行多次。
onUnbind()方法只有调用unbindService()方法才会导致该方法的执行。
客户端和服务通过Ibinder对象联系在一起。bindService()方法调用时,需要Intent,ServiceConnection和flag参数,其中serviceConnection对象用于接收服务onBind()方法,返回的Ibinder对象,并且该对象会传入到第二个参数serviceConnection对应的方法中,触发方法的回调,总而言之,使用客户端持有到达service对象的引用。