Android Service

来源:互联网 发布:我爱你韩国知乎 编辑:程序博客网 时间:2024/06/15 14:22
Android Service 分本地service和remote service, 前者和调用者在一个进程内,使用方法很简单,后者和调用者不在同一个进程。


1. remote service如何拿到对应的IBinder

对于remote service,client端可以用bindService()绑定到一个service.Android系统调用service的onBind()方法。bindService()会立即返回,它不会同步返回IBinder给Client。要拿到IBinder,Client必须先创建一个ServiceConnection的实例并作为参数传给bindService()。ServiceConnection包含一个回调方法onServiceConnected,当绑定service成功后,系统调用这个回调方法来返回的IBinder。

2. BindService和StartedService异同:
Started Service中使用StartService()方法来进行方法的调用,调用者和服务之间没有联系,即使调用者退出了,服务依然在进行。

BindService中使用bindService()方法来绑定服务,调用者和绑定者绑在一起,调用者一旦退出服务也就终止了。


3. ServiceManager

并不是所有的service都需要注册到ServiceManager里的,一般Android系统自带的service会注册到ServiceManager。这样client可以通过字符串名字向ServiceManger查询得到service对应的IBinder,然后进行通讯。

个人觉得,而自己开发的service一般都不会注册到ServiceManager(至少目前我是没有在Service相关的Java代码中有发现注册service到ServiceManager的地方),而是client需要用到service的时候通过bindservice的方式去拿到IBinder进行通讯。




0 0