欢迎来到天天文库
浏览记录
ID:40545721
大小:324.00 KB
页数:14页
时间:2019-08-04
《Android中的Service概念及用途》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Service概念及用途Android中的Service,其意思是“服务”,它是在后台运行,不可交互的。Service自己不能运行,需要通过某一个Activity或者其它Context对象来调用,如Context.startService()和Context.bindService()两种方式启动Service。Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想
2、边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用Service,我们就听不到歌了,所以这时候就得用到Service了,又比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的这时候我们可以用Service在后台定时更新,而不用每打开应用的时候在去获取。如果在Service的onCreate或者onStart方法中做一些很耗时的动作,最好是启动一个新线程来运行这个Service,因为,如果Service运行在主线程中,会影响到程序的UI操作或者阻塞主线程中的其它事情。Service生命周期Service的生命周期方法比Ac
3、tivity要少一些,只有onCreate、onStart、onDestroy。有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。1)通过startService启动Service启动的时候会经历生成开始(onCreateàonStart)过程,Service停止的时候直接进入销毁过程(onDestroy)。而如果是调用者直接退出而没有调用stopService,Service会一直在后台运行。直到下次调用者再启动起来,并明确调用stopService。2)通过bindService启动通过bindService方法启动S
4、ervice,其只会运行onCreate方法,如果调用退出了,Service会调用onUnbind,onDestroyed方法。Service的onCreate方法只会被调用一次。如果先绑定了,那么启动的时候就直接运行Service的onStart方法,如果先启动,那么绑定的时候就直接运行onBind方法。如果先绑定上了,就停止不了,也就是stopService不能用了,只能先unbindService,再stopService,所以,先启动还是先绑定,是有区别的。示例1下面以一个通过Service来播放音乐的例子说明Service的具体用法,其具体界
5、面如下所示:在这个界面中,点击“StartPlaying”按钮,即开始打开音乐文件,进行循环播放。点击“StopPlaying”按钮,即关闭音乐,并退出应用程序。其程序结构如下图所示:可以看到,其功能主要由Music与TestMusicService两个类组成,其源代码如下:packagecom.shen.service;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid
6、.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;publicclassTestMusicServiceextendsActivity{privateTextViewtv;privateButtonbtn1,btn2;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(
7、savedInstanceState);setContentView(R.layout.main);btn1=(Button)this.findViewById(R.id.btn1);btn1.setOnClickListener(newButtonListener1());btn2=(Button)this.findViewById(R.id.btn2);btn2.setOnClickListener(newButtonListener2());}privateclassButtonListener1implementsOnClickListener
8、{publicvoidonClick(Viewv){TestMusicService.this
此文档下载收益归作者所有