什么是Service服务Service是android四大组件之一,没有显示的页面,在每一个应用程序战功扮演这非常重要的角色。主要用于在后台处理一些耗时的逻辑操作,或者去执行某些需要长期运行的任务,必要的时候我们可以在程序退出的时候,还让service在后台继续的保持运行状态。
服务的开启方式1. startService();
2. bindService();
服务的生命周期· 如果是startService,那么的它的生命周期是:
1. onCreate()--> onStartCommand() --> onStart() -->onDestroy();
2. .服务只会被创建一次,多次调用startService,不会多次调用onCreate()方法,
会执行onStartCommand() --> onStart() --> onDestory()方法;
3. 一旦服务开启,就于调用者无关,即使Activity销毁了,服务依然存在进程中;
4. 外界不可以调用服务里面的方法
· 如果是bindService,那么它的生命周期是:
1. onCreate() --> onBindService() --> onUnBindService() --> onDestory();
2. 服务可以被绑定一次,一旦绑定成功,就不可多次绑定,否则就回解绑失败
3. bind方式,只可以解绑一次,多次解绑,应用程序会异常退出
4. 不求同生,但求同死,bind的服务和调用者的生命周期一致
5. 外界可以调用服务里面的方法
混合调用服务的生命周期处理
为了保证服务长期在后台运行,同时又想调用服务里面的方法
startService()开启服务
bindService()调用服务里面的方法
unBindService()解绑服务
stopService结束服务
开启服务的缺点
无法使用服务里面的方法
bind服务步骤,以及调用服务里面的方法
1.绑定方式开启服务
bindService(intentService,ServiceConnection,BIND_AUTO_CREATE);
2.服务内部需要定义一个服务的代理类
MyBinder extends Binder{
public Service getService(){
return Service.this;
}
}
3.返回IBinder对象
public IBinder onBind(Intent intent) {
return new MyBinder();
}
4.实现ServiceConnection服务里面的方法
private class MyServieConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
IService.MyBinder binder = (IService.MyBinder) service;
mIService = binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
5.调用服务里面的方法
mIService.methed();
绑定服务的常见应用
· 提供一个服务,后台运行,里面有一些公共的逻辑供调用.
1.音乐播放器,在服务里面提供上一曲,下一曲,播放,暂停等
2.qq,微信接收离线消息
本文版权归黑马程序员Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!作者:黑马程序员Android+物联网培训学院首发:http://Android.itheima.com