Android中的service:
Service是android四大组件中的一个,也是与activity最为相似的一个组件,与activity类似,使用Service首先应该写明一个子类来继承service,service也需要在xml配置文件中写明。
<service android:name=".MyService"/>
区别在于service一直在后台运行,没有自己的用户界面,这一点与线程较为类似。
使用Service首先应该写明一个子类来继承service。下面来介绍service的两种启动方法。
1.采用start的方式开启服务:
使用这种start方式启动的Service的生命周期如下:
onCreate()--->onStartCommand()(onStart()方法已过时)
服务停止的时候调用 onDestory()。
2.采用bind的方式开启服务
这种方式与第一种方式不冲突,利用start开启过的服务仍然可以绑定。也就是说一个service可以与多个客户绑定。
执行顺序:
onCreate() --->onBind()--->onUnbind()--->onDestory()
ServiceConnection conn;
// bind
bindService(new Intent(this, MyService.class), //绑定服务
conn = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
// 服务取消连接时,自动调用这个函数
}
public void onServiceConnected(ComponentName name,
IBinder service) {
// 服务绑定时调用此函数(所有客户端都结束时调用)
}
}, 0);
// unbind
unbindService(conn);//解除绑定
区别:第一种方式,调用者死亡,服务不会停止,而是在后台一直运行。第二种方式一旦调用者死亡,服务业就停止了(如果没有startService,而调用stopservice不会出错。如果没有bindservice而调用unbindservice就会出错)。