<强> Android 服务类与生命周期强>
服务是Android四大组件与活动最相似的组件,都代表可执行的程序,区别在于服务一直在后台运行且没有用户界面。
1.服务的类图和生命周期
先来看看服务的类图:
接下来看看服务的生命周期:
<强> 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 ,服务类与生命周期详细介绍