《Android项目式程序设计》08 Service服务写字字帖_第1页
《Android项目式程序设计》08 Service服务写字字帖_第2页
《Android项目式程序设计》08 Service服务写字字帖_第3页
《Android项目式程序设计》08 Service服务写字字帖_第4页
《Android项目式程序设计》08 Service服务写字字帖_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目八Service服务学习目标了解Service的特点掌握Service的启动方式掌握Service的两种类型:本地服务和远程服务情景导入日常生活通过手机播放音频来学习、工作和娱乐已经成为大多数人采取的主要途径,本项目以手机播放器为业务背景,通过Service组件技术,实现播放器运行过程中的核心功能:播放、暂停、重播、停止等。任务描述功能描述本任务将设计一款音乐播放器程序。使用线性布局设计音乐播放器主界面初始化进度条的长度,获取音乐文件的长度点击“播放”按钮,播放音乐并且更新进度条进度点击“暂停”按钮,暂停播放音乐并且暂停更新进度条点击“重播”按钮,音乐重新开始播放并且更新进度条进度点击“停止”按钮,音乐停止播放并且进度条停止更新【基本框架】基本框架如图8.1所示,将框架图转换成的效果如图8.2所示。任务描述任务技能技能点1Service概述1Service简介Service是可以在后台执行长时间操作而不使用户界面的应用组件,与Android四大组件中的Activity最相似,代表着可执行程序。Service有自己的生命周期,按运行类别分类可分为前台Service与后台Service两种。任务技能前台Service和后台Service最大的区别在于前台Service会在系统的状态栏显示一个一直运行的图标。当下拉状态栏后会看到更为详细的信息,类似于通知。有些项目要实现Service在后台更新数据的同时,还要在状态栏显示图标和新的信息的时候必须使用前台Service了,前台Service应用,如图8.3所示。任务技能任务技能2Service方法说明Service有自己的生命周期,经历了创建到销毁的过程,Service的有两种启动方式:startService()和bindService()。Service生命周期如图8.4所示。Service生命周期相关方法说明如表8.1所示。任务技能任务技能任务技能3Service实现虽然Service在后台运行,但是Service后端的数据还是要用户可见的,最终还是要呈现在前端Activity上的,因此在启动Service时,系统会重新开启一个新的进程。当想获取启动的Service实例时,可以用到bindService()和onBindService()方法。在这两种方法中分别执行了Service中的IBinder()和onUnbind()方法。接下来新建一个Service,命名为Service.java。任务技能技能点2服务通信1本地服务通信本地服务通信是最常用的后台Service,用于实现应用程序内部的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行。Service与访问者之间无法进行通信以及数据交换,若Service和访问者之间要进行通信,就调用bindService()和unBindService()这两个方法来启动或关闭Service。Context的bindService()方法的完整方法为bindService(Intentservice,ServiceConnectionconn,intflags),Context的bindService()方法参数说明如表8.2所示。任务技能注意:当调用者主动通过unBindService()方法断开与Service的连接时,ServiceConnection对象的onServiceDisconnected(ComponentNamename)方法并不会被调用。使用startService()启动服务后,要使用stopService()停止服务。同时使用startService()与bindService()要注意,需要unbindService()与stopService()同时调用,才能终止Service。任务技能2远程服务通信远程服务是一个独立的进程,它不受其它进程的影响,能为其它应用程序提供可用的接口—进程间通信IPC(Inter-ProcessCommunication),Android提供了AIDL(AndroidInterfaceDefinitionLanguage,接口描述语言)工具来帮助进程间接口的建立。远程服务通信适用于为其它应用程序提供公共服务的Service,这种Service就是系统常驻Service。当创建远程服务时,首先要通过AIDL文件定义服务(Service)向客户端(Client)提供的接口,在对应的目录下添加一个后缀为.aidl的文件,IMyAidllnterface.aidl文件内容如下所示。任务技能Aidl的适用场景为:只有允许客户端从不同的应用程序去访问Service时,可以使用aidl来实现。当我们创建远程Service时,我们还需要新建RemoteService,在远程服务中,通过Service的onBind(),在客户端与服务建立连接时,用来传递Stub(存根)对象。具体代码如下所示。任务技能任务技能同时,在AndroidManifest.xml中对RemoteService进行如下配置:任务实施第一步:在Eclipse中创建一个Android工程,命名为“音乐播放器”,并设计界面。如图8.2所示。第二步:在src文件夹中建立MainActivity.java文件并实现界面初始化。第三步:在MainActivity中实现获取音乐文件功能。第四步:实现音乐播放功能。第五步:实现音乐暂停功能。第六步:实现音乐重播功能。第七步:实现音乐停止功能。第八步:编写更新进度条代码。第九步:编写取消绑定防止退出程序抱死的代码。第十步:运行程序。任务实施任务拓展【拓展目的】熟悉并掌握Service生命周期的使用方法以及本地与远程服务。【拓展内容】实现“音乐播放器”上一曲下一曲功能。效果如图8.6所示。【拓展步骤】1设计思路添加上一曲,下一曲成功实现歌曲的切换功能。2“上一曲”,“下一曲”功能。任务拓展任务总结学习Service需要重点掌握创建、配置Service组件,以及如何启动、停止Service。本项目重点是Service的开发和通信,这个知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论