Android ,服务类与生命周期详细介绍

  

<强> Android 服务类与生命周期

  

服务是Android四大组件与活动最相似的组件,都代表可执行的程序,区别在于服务一直在后台运行且没有用户界面。

  

1.服务的类图和生命周期

  

先来看看服务的类图:
  

  

 Android ,服务类与生命周期详细介绍

  

接下来看看服务的生命周期:
  

  

 Android ,服务类与生命周期详细介绍

  

<强> 2。开发服务

  

(1)开发服务需要两步:
  

  

第1步:定义子类,继承服务
  第2步:在AndroidManifest.xml文件中配置服务

  

(2)创建服务

        公开课MyService延伸服务{//必须实现,绑定该服务时被回调   @Override   公共内部>   & lt;应用程序   …   & lt; !——配置一个服务组件——比;   & lt;服务android: name=?MyService”比;   & lt; intent-filter>   & lt; !——为该服务组件的意图过滤器配置行动——比;   & lt;行动android: name=" com.gc.service。MY_SERVICE”/比;   & lt;/intent-filter>   & lt;/service>   & lt;/application>   之前      

接下来就可以运行服务了。

  

(4)启动和停止服务(一般方式)

     //创建启动服务的意图   最终目的意图=new意图();//为意图设置行动属性   intent.setAction (“com.gc.service.MY_SERVICE”);   …//启动指定服务   startService(意图);   …//停止指定服务   stopService(意图);   之前      

当程序使用startService (), stopService()启动,关闭服务时,服务与访问者之间无法进行通信、数据交换,故下面介绍另一种方式启动和停止服务。

  

(5)启动和停止服务(绑定服务并与之通信)

  

如果服务和访问者之间需要进行方法调用或数据交换,则应该使用bindService()和unbindService()方法启动,停止服务。

        bindService(目的意图,ServiceConnection康涅狄格州,int旗帜),三个参数如下:      目的:指定要启动的服务      康涅狄格州:用于监听访问者与服务之间的连接情况,当访问者与服务之间连接成功时将回调该ServiceConnection对象的onServiceConnected (ComponentName名称、内部服务)方法;反之回调该ServiceConnection对象的onServiceDisconnected (ComponentName名称)方法(主动调用unbindService方法断开连接时则不回调)      国旗:指定绑定时是否创建服务,0:不自动创建;BIND_AUTO_CREATE:自动创建      注意:ServiceConnection对象的onServiceConnected方法中有一个内部对象,该对象即可实现与绑定服务之间的通信。   在绑定本地服务的情况下,onBind(目的意图)方法所返回的内部对象将会传给ServiceConnection对象里onServiceConnected (ComponentName名称、内部服务)方法的服务参数,这样访问者就可以通过该内部对象与服务进行通信。      之前      

实际开发通常会采用继承粘合剂(内部的实现类)的方式实现自己的内部对象。

        公开课MyService延伸服务{   私人int数;//定义onbind方法所返回的对象   私人MyBinder粘结剂=new MyBinder ();//通过继承活页夹来实现内部类   公开课MyBinder延伸粘合剂{   公共int getCount () {   返回计数;//获取服务的运行状态   }   }//必须实现,绑定该服务时被回调   @Override   公共内部>   公开课MyServiceTest延伸活动{//服务的内部对象   MyService。MyBinder粘合剂;//定义一个ServiceConnection对象   私人ServiceConnection康涅狄格州=new ServiceConnection () {//当该活动与服务连接成功时回调   @Override   公共空间onServiceConnected (ComponentName名称、内部服务){//获取服务的onBind方法所返回的MyBinder对象   粘结剂=(MyService.MyBinder)服务;   }//当该活动与服务断开连接时回调   @Override   公共空间onServiceDisconnected (ComponentName名称){   }   };      @Override   公共空间onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   setContentView (R.layout.activity_main);   …//创建启动服务的意图   最终目的意图=new意图();//为意图设置行动属性   intent.setAction (“com.gc.service.MY_SERVICE”);//绑定指定服务   bindService(意图,康涅狄格州,Service.BIND_AUTO_CREATE);   …   binder.getCount ();//获取服务的计算值   …//解除绑定服务   unbindService(康涅狄格州);   }   }         

Android ,服务类与生命周期详细介绍