您的位置:首页 > 移动开发 > Android开发

android之旅18 服务2--绑定方式与启动方式

2016-01-04 20:35 323 查看
服务开启方式:

startService才有对应的服务优先级,该进程为服务进程,关闭为stopService

bindService也能启动服务,但所在进程不是服务进程,他与启动该服务的activity同生共死,触发方式是发现activity死了然后unBind(LOGCAT会打印很多错误)

startService启动的服务和activity没有任何联系了,activity死了,服务还在。

服务可以混合调用:先startService,然后bindService,用于又要返回IBinder又要有服务的进程优先级,一定要这么用。

混合停止的话要先解绑然后stop

不这么调用的话,就是先bind然后start,然后再stop再unbind的时候,stop不会调用任何生命周期(这个很奇怪),unbind的时候会先unbind然后destroy

-

public void click2Bind(View v){
// conn = new MyServiceConn();解绑也会用到,一定要提出来公用
bindService(intent, conn, BIND_AUTO_CREATE);
// 执行的生命周期是create--->bind,不会执行onStartCommand方法
}

public void click2UnBind(View v){
unBindService(conn);    //conn与绑定的那个对象实例是同一个
// 执行生命周期unBind--->destroy
}


public class MyServiceConn implements ServiceConntection{
public void onServiceConnected(ComponentName name, IBinder service){
//当服务连接建立时候调用(绑定服务就是与服务建立一个连接)
//service是onBind返回的对象
}

public void onServiceDisconnected(ComponentName name){

}
}


public class MyService extends Service{
//startService调用的时候不会调用Bind相关的服务
public IBinder onBind(Intent intent){
return new IBinderImpl();//startService是没有返回东西的
}

public boolean onUnBind(Intent intent){
}

public void doBusiness(){
//自定义实现的业务方法
}

class IBinderImpl extends Binder{
public void  doBusinessWraper(){
doBusiness();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: