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

  • 服务开启方式:
    • 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();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值