已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 Service应用,本章主要内容,什么是Service 跨进程调用 Service实例音乐播放器,什么是Service,顾名思义,Service即“服务”的意思,它与Activity属于同一等级的应用程序组件,不同的是Activity拥有前台运行的用户界面,而Service不能自己运行,需要通过某个Activity或者其他Context对象来调用。 Service在后台运行,它不能与用户直接进行交互。在默认情况下,Service运行在应用程序进程的主线程之中,但如果需要在Service中处理一些诸如连接网络等耗时操作时,就应该将其放在单独的线程中进行处理,避免阻塞用户界面。可以通过Context.startService()和Context.bindService()两种方式来启动Service。,什么是Service,使用Context.startService()启动Service 经历如下的步骤 Context.startServiceonCreate()onStart()Service runningonDestroy()Service stop 如果Service处于未运行的状态,则需要先调用onCreate()然后再调用onStart()的顺序来启动;如果Service已经处于运行状态,则只需要调用onStart()来启动Service即可。onStart()方法可被重复的调用多次。如果是使用这种方式启动Service,那么关闭Service的方法就很简单,可以通过调用stopService()方法停止Service,再调用onDestroy()方法销毁Service。如果调用者直接退出而没有调用stopService,那么Service会在后台一直运行,直到该Service的调用者再次启动后通过stopService关闭Service。这种调用方式的Service生命周期:onCreate()onStart()(多次)onDestroy()。,什么是Service,2. 使用Context.bindService()启动Service 该种方法启动Service需要经历如下步骤 Context.bindService()onCreate()onBind()Service runningstopService()onUnbind()onDestroy()Service stop。 onBind将返回给客户端一个IBind接口实例,这个实例允许客户端回调服务方法,比如得到Service的运行状态的操作。这种方法会把调用者(Context,Activity等)和Service绑定在一起,Context退出时,Service也会调用onUnbind()onDestroy()退出。所以这种调用方式下Service的生命周期为:onCreate()onBind()(与第一种方式不同,这里onBind()只能绑定一次,不可多次绑定)onUnbind()onDestroy()。,跨进程调用,通常应用程序都在一个专属于自己的进程内运行,但有时需要在进程间传递对象,这就涉及到了跨进程调用机制。在 Android平台中,一个进程不能直接访问其他进程的内存区域。为了解决进程间数据共享的问题,需要把对象拆分成操作系统能理解的简单形式,以便伪装成本地对象进行跨界访问,为此就需要跨进程通信的双方约定一个统一的接口。由于编写这种接口的方法具有很大的共性,Android提供了AIDL工具来辅助完成接口的编写工作。 AIDL(Android Interface Definition Language,即Android 接口描述语言)属于IDL语言的一种,借助它可以快速地生成接口代码,使得在同一个Android设备上运行的两个进程之间可以通过内部通信进程进行交互。如果需要在一个进程中(假设为一个Activity)访问另一个进程中(假设为一个Service)某个对象的方法,就可以使用AIDL来生成接口代码并传递各种参数。,跨进程调用,跨进程调用通常是以服务端提供服务供客户端调用的形势存在的。因此要使用AIDL,服务端需要以aidl文件的方式提供服务接口,AIDL工具将生成一个对应的java接口对象,并且在生成的接口中包含一个供客户端调用的stub服务桩类,Stub对象就是远程对象的本地代理。服务端的实现类需要提供返回stub服务桩类对象的方法。使用时,客户端通过onBind方法得到服务端stub服务桩类的对象,之后就可以像使用本地对象一样使用它了。,Service实例音乐播放器,为了更好的学习和深入的了解Service,这里通过一个示例项目来介绍分别通过Context.startService()和Context.bindService()两种方式来启动Service。示例项目名称为ServiceDemo。因为示例涉及到音频文件的播放,所以需要在项目的res文件夹中新建一个raw文件夹,在raw文件夹中放入测试音乐test.mp3。下面对代码进行分析和说明。 程序的主界面由ServiceDemo.java实现,对应的布局文件是main.xml,主要实现了通过四个按钮分别启动四种不同的音乐播放方式播放音乐文件,即通过四个Button来启动四个不同的Activity。,Service实例音乐播放器,程序运行效果,初始界面,用startS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯改造合同协议书
- 电网企业合作协议书
- 电杆框架订合同范本
- 私人入股店面协议书
- 电脑预定协议书范本
- 电器安装维修协议书
- 电器总代理的协议书
- 结业协议合同写模板
- 2024年12月大学英语四级考试真题第3套(含答案)
- 失眠症症状解析及护理模式
- (广东二模)2025年广东省高三高考模拟测试(二)语文试卷(含答案解析)
- 九年级数学下册人教版第二十六章《反比例函数》单元测试题(基础篇)(含答案)
- 氨水应急预案培训
- 2024年马工学人力资源管理试题及答案
- 新22J01 工程做法图集
- 砂石骨料培训课件
- 冷库制冷系统安装施工组织设计方案
- 1绪论-固体废物处理与处置课件
- 转型培训师金牌讲师的12堂必修课读书笔记
- 2024年社区警务规范考试题库
- 废弃矿洞封堵合同范例
评论
0/150
提交评论