四."绑定式"服务知识全解

前言

之前,我们已经讲过了"非绑定式"服务的基本使用了。这节我们就来讲讲“绑定式”服务的使用。“绑定式”服务又称"远程服务",它不同于“非绑定式”服务,其生命周期可以和activity的生命周期绑定在一起,方便控制。

今天涉及的内容:

  1. RemoteService代码
  2. "绑定式服务"的注册
  3. "绑定式服务"的绑定与解绑
  4. "绑定式服务"的生命周期
  5. "绑定式服务"需要注意的问题

一. RemoteService代码

先写一个"绑定式服务",类名RemoteService,并写下它的关键方法。
RemoteService代码如下:

/***
 * 绑定式服务
 * 
 * @author pei
 * @create 2016-4-28
 *
 */
public class RemoteService extends Service{
    
    private IBinder mBinder=new RemoteBinder();
    
    @Override
    public void onCreate() {
        super.onCreate();
        LogUtil.i("======RemoteService====onCreate======");
    }
    
    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub

        LogUtil.i("======RemoteService====onBind======");
        return mBinder;
    }

    @Override
    public boolean onUnbind(Intent intent) {
        LogUtil.i("======RemoteService====onUnbind======");
        return super.onUnbind(intent);
    }

    @Override
    public void onDestroy() {
        LogUtil.i("======RemoteService====onDestroy======");
        super.onDestroy();
    }
    
    public class RemoteBinder extends Binder{
        public RemoteService getService(){
            return RemoteService.this;
        }
    }
}

二. "绑定式服务"的注册

不论是”绑定式“服务,还是"非绑定式"服务,都逃脱不了需要注册的命运,所以我们需要在manifast.xml中注册服务:

     
        
            
                
            
        
        //其他代码省略
        //......
    

这里service标签和action标签中的name属性,我都是用RemoteService全路径来标识,以保证其唯一性。

三. "绑定式服务"的绑定与解绑

"绑定式服务"是通过绑定和解绑来实现服务的启动和注销的。下面让我们来看看如何在MainActivity中绑定一个service:

你可能感兴趣的:(四."绑定式"服务知识全解)