前言
之前,我们已经讲过了"非绑定式"服务的基本使用了。这节我们就来讲讲“绑定式”服务的使用。“绑定式”服务又称"远程服务",它不同于“非绑定式”服务,其生命周期可以和activity的生命周期绑定在一起,方便控制。
今天涉及的内容:
- RemoteService代码
- "绑定式服务"的注册
- "绑定式服务"的绑定与解绑
- "绑定式服务"的生命周期
- "绑定式服务"需要注意的问题
一. 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中注册服务:
</application
//其他代码省略
//......
>
<service android:name="com.example.function.RemoteService">
<intent-filter>
<action android:name="com.example.function.RemoteService"/>
</intent-filter>
</service>
//其他代码省略
//......
</application>
这里service标签和action标签中的name属性,我都是用RemoteService全路径来标识,以保证其唯一性。
三. "绑定式服务"的绑定与解绑
"绑定式服务"是通过绑定和解绑来实现服务的启动和注销的。下面让我们来看看如何在MainActivity中绑定一个service: