第六章 Service应用实例.ppt

上传人:s****8 文档编号:67638950 上传时间:2022-12-26 格式:PPT 页数:5 大小:403.50KB
返回 下载 相关 举报
第六章 Service应用实例.ppt_第1页
第1页 / 共5页
第六章 Service应用实例.ppt_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《第六章 Service应用实例.ppt》由会员分享,可在线阅读,更多相关《第六章 Service应用实例.ppt(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第六章Service应用实例Android课件认识Service一、什么是一、什么是Service从字面上理解从字面上理解Service的意义是的意义是“服务服务”,它是在后台运行,不可交互的。它和前面讲解的,它是在后台运行,不可交互的。它和前面讲解的Activity级别差不多,但是它不能自己运行,需要通过一个级别差不多,但是它不能自己运行,需要通过一个Activity或者或者Context对象来调用,对象来调用,如如Context.startService()和和Context.bindService()两种方法来启动两种方法来启动Service。如果在。如果在Service的的onCrea

2、te()或者或者onStart()做一些很耗时的动作,最好是启动一个新线程来运行做一些很耗时的动作,最好是启动一个新线程来运行Service,因为如果,因为如果Service是运行在主线程中,会影响到程序的是运行在主线程中,会影响到程序的UI操作或者阻塞主线程中的操作或者阻塞主线程中的其他事情。其他事情。1)什么时候需要)什么时候需要Service这主要看应用的场景,例如,播放多媒体的时候用户启动了其他这主要看应用的场景,例如,播放多媒体的时候用户启动了其他Activity,这个时候程序要在后,这个时候程序要在后台继续播放;如检测台继续播放;如检测SD卡上下文变化;或者在后台记录用户的地理信息

3、位置的改变等,一句卡上下文变化;或者在后台记录用户的地理信息位置的改变等,一句话服务总是藏在后台。话服务总是藏在后台。一个直观的例子:一个正在从播放列表中播放歌曲的媒体播放器,在一个媒体播放器的应用中,一个直观的例子:一个正在从播放列表中播放歌曲的媒体播放器,在一个媒体播放器的应用中,应该会有多个应该会有多个Activity,让使用者可以选择歌曲并播放歌曲。然而音乐播放这个功能并没有,让使用者可以选择歌曲并播放歌曲。然而音乐播放这个功能并没有对应的对应的Activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放的。在这个例子,因为使用者会认为在导航到其他屏幕时音乐应该还在播放的。在这

4、个例子中媒体播放器这个中媒体播放器这个Activity会使用会使用Context.startService()来启动一个来启动一个Service,从而可以在,从而可以在后台保持音乐播放。同时,系统也保持这个后台保持音乐播放。同时,系统也保持这个Service一直执行,直到一直执行,直到Service运行结束,我们运行结束,我们还可以进行暂停、重播等操作。还可以进行暂停、重播等操作。2)如何使用)如何使用Service这里以这里以Local Service举例说明。举例说明。(1)创建布局文件)创建布局文件main.xml,在其中的,在其中的LinearLayout布局中放有布局中放有4个按钮,

5、分别用来进行个按钮,分别用来进行4种种操作。操作。使用Serviceqqqqqqqqq(2)创建)创建TestServiceHolder和和TestService类类q在在TestService中继承中继承Service类,并重写类,并重写onStart()、onDestroy()等方法,例子中重要通过等方法,例子中重要通过输入输入LOG的方式确定被调用的方法。另外其中用到的方式确定被调用的方法。另外其中用到Notification是为了明显表明是为了明显表明Service存存活的状态。活的状态。TestServiceHolder类用来测试类用来测试Service。使用Service(3)在)

6、在AndroidManifest.xml配置配置qqq q q q q q q q q qService的生命周期 二、二、Service的生命周期的生命周期Service的生命周期方法比的生命周期方法比Activity要少一些,只有要少一些,只有onCreate()、onStart()、onDestroy()、从、从前面的例子可以看以看到,有两种方式启动一个前面的例子可以看以看到,有两种方式启动一个Service,他们对,他们对Service生命周期的影响生命周期的影响是不一样的。是不一样的。1)通过)通过startService启动启动Service启动的时候会经历生成启动的时候会经历生成

7、开始(开始(onCreate-onStart)过程,)过程,Service停止的时候直接停止的时候直接进入销毁过程(进入销毁过程(onDestroy)。而如果是调用者()。而如果是调用者(TestServiceHolder)自己直接退出而没)自己直接退出而没有调用有调用stopService,Service会一直在后台运行。直到下次调用者会一直在后台运行。直到下次调用者(TestServiceHolder)再次启动起来,并明确调用)再次启动起来,并明确调用stopService。2)通过)通过bindService启动启动提供提供bindService启动启动Service,其只会运行,其只会

8、运行onCreate,这个时候将,这个时候将TestServiceHolder和和TestService绑定在一起,如果绑定在一起,如果TestServiceHolder退出了,退出了,Service就会调用就会调用onUnbind-onDestroy,所谓绑定在一起就共存亡了。,所谓绑定在一起就共存亡了。这里要明确,这里要明确,不管用什么方法启动多少次不管用什么方法启动多少次Service,Service的的onCreate方法只会被调用一次,方法只会被调用一次,无论多少次的启动或者绑定,无论多少次的启动或者绑定,Service只被创建一次只被创建一次。如果先是绑定(。如果先是绑定(bind)了,那么启动)了,那么启动(start)的时候就直接运行)的时候就直接运行Service的的onStart方法,如果先是启动(方法,如果先是启动(start),那么绑定),那么绑定(bind)的时候就直接运行)的时候就直接运行onBind方法。如果先绑定(方法。如果先绑定(bind)上了,就停止()上了,就停止(stop)不)不掉了,也就是掉了,也就是stopService不能用了,只能先不能用了,只能先UnbindService,再,再stopService,所以是先,所以是先启动(启动(start)还是先绑定()还是先绑定(bind)行为是有区别的。)行为是有区别的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁