您所在位置: 网站首页 / 后台服务.ppt / 文档详情
后台服务.ppt 立即下载
2024-11-12
约6.6千字
约49页
0
1.7MB
举报 版权申诉
预览加载中,请您耐心等待几秒...

后台服务.ppt

后台服务.ppt

预览

免费试读已结束,剩余 44 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android应用开发第7讲内容向导Service简介
Service是Android系统的服务组件,适用于开发没有用户界面且长时间在后台运行的应用功能
因为手机硬件性能和屏幕尺寸的限制,通常Android系统仅允许一个应用程序处于激活状态并显示在手机屏幕上,而暂停其他处于未激活状态的程序
因此,Android系统需要一种后台服务机制,允许在没有用户界面的情况下,使程序能够长时间在后台运行,实现应用程序的后台服务功能,并能够处理事件或数据更新7.1.1Service生命周期
Service生命周期包括
完全生命周期
活动生命周期
onCreate()事件回调函数:Service的生命周期开始,完成Service的初始化工作
onStart()事件回调函数:活动生命周期开始,但没有与之对应的“停止”函数,因此可以近似认为活动生命周期也是以onDestroy()标志结束
onDestroy()事件回调函数:Service的生命周期结束,释放Service所有占用的资源
Service的使用方式一般有两种

启动方式

绑定方式启动方式
通过调用Context.startService()启动Service,通过调用Context.stopService()或Service.stopSelf()停止Service。因此,Service一定是由其它的组件启动的,但停止过程可以通过其它组件或自身完成
在启动方式中,启动Service的组件不能够获取到Service的对象实例,因此无法调用Service中的任何函数,也不能够获取到Service中的任何状态和数据信息
能够以启动方式使用的Service,需要具备自管理的能力,而且不需要从通过函数调用获取Service的功能和数据绑定方式
Service的使用是通过服务链接(Connection)实现的,服务链接能够获取Service的对象实例,因此绑定Service的组件可以调用Service中实现的函数,或直接获取Service中的状态和数据信息
使用Service的组件通过Context.bindService()建立服务链接,通过Context.unbindService()停止服务链接
如果在绑定过程中Service没有启动,Context.bindService()会自动启动Service,而且同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务启动方式和绑定方式的结合
这两种使用方法并不是完全独立的,在某些情况下可以混合使用
以MP3播放器为例,在后台的工作的Service通过Context.startService()启动某个音乐播放,但在播放过程中如果用户需要暂停音乐播放,则需要通过Context.bindService()获取服务链接和Service对象实例,进而通过调用Service对象实例中的函数,暂停音乐播放过程,并保存相关信息7.1.2本地服务服务管理实例服务管理实例
完成Service类后,需要在AndroidManifest.xml文件中注册这个Service
注册Service非常重要,如果开发人员不对Service进行注册,则Service根本无法启动
AndroidManifest.xml文件中注册Service的代码如下
<serviceandroid:name=".RandomService"/>
使用<service>标签声明服务,其中的android:name表示Service类的名称,一定要与建立的Service类名称一致7.2.1显示启动
在完成Service代码和在AndroidManifest.xml文件
中注册后,下面来说明如何启动和停止Service。
有两种方法启动Service,显式启动和隐式启动
显式启动需要在Intent中指明Service所在的类,并调用startService(Intent)启动Service,示例代码如下

finalIntentserviceIntent=
newIntent(this,RandomService.class);
startService(serviceIntent);
7.2.2隐式启动
需要在注册Service时,声明Intent-filter的action属性在隐式启动Service时,需要设置Intent的action属性,这样则可以在不声明Service所在类的情况下启动服务。隐式启动的代码如下
finalIntentserviceIntent=newIntent();
serviceIntent.setAction("edu.hrbeu.RandomService");

如果Service和调用服务的组件在同一个应用程序中,可以使用显式启动或隐式启
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

后台服务

文档大小:1.7MB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用