首页技术文章正文

Android+物联网培训实战教程之Android下service详解

更新时间:2017-05-31 来源:黑马程序员Android+物联网培训学院 浏览量:

什么是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
分享到:
在线咨询 我要报名
和我们在线交谈!