- 服务开启方式:
- 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){
bindService(intent, conn, BIND_AUTO_CREATE);
}
public void click2UnBind(View v){
unBindService(conn);
}
public class MyServiceConn implements ServiceConntection{
public void onServiceConnected(ComponentName name, IBinder service){
}
public void onServiceDisconnected(ComponentName name){
}
}
public class MyService extends Service{
public IBinder onBind(Intent intent){
return new IBinderImpl();
}
public boolean onUnBind(Intent intent){
}
public void doBusiness(){
}
class IBinderImpl extends Binder{
public void doBusinessWraper(){
doBusiness();
}
}
}