Android 服务Service
作为android四大组件之一,服务的创建方式与其他组件是一样的。首先定义一个类继承Service,实现该实现在方法,然后在清单文件中配置。service是看不见,activity是可以看见的。
服务的启动方式分为 startService和bindService两种
startService启动服务的特点:
第一次点击按钮开启服务:执行onCreate,onStartCommand
第二次点击按钮开启服务:执行onStartCommand
服务一旦被开启,服务就会在后台长期运行,直到用户手工停止。
bindService启动服务的特点:
1、第一次点击按钮会执行服务的oncreate方法和onbind方法
2、调用者(activity)与服务之间不同时创建,但是同时销毁
3、服务不可以多次解绑,多次解绑会报异常。
4、通过bind方式开始服务,服务不能再设置页面找到,相当于是隐形的服务
通过bindService方式启动服务可以调用服务里面的方法。步骤:
1、在服务内部创建一个方法,用来被activity调用。
2、在服务内部创建一个类继承Binder
//定义中间人对象 IBinder
private class MyBinder extends Binder implements IService{
public void 方法(int money){
//调用服务里面的方法
服务方法(money);
}
}
3、将定义的类对象在IBinder中返回
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
}
4、在activity的中调用bindService,目的是为了获取我们在service中创建的对象。
Intent intent=new Intent(this,DemoService.class);
myconn=new Myconn();
bindService(intent,myconn,BIND_AUTO_CREATE);
5、在activity中创建一个类,实现ServiceConnection
private class Myconn implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//获取中间人对象
myBinder = service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
6、服务连接对象创建好之后,就可以调用服务里面的方法了
7、当activity销毁的时候解绑服务
@Override
public void onDestroy(){
unbindService(myconn);
super.onDestroy();
}