




如果您无法下载资料,请参考说明:
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和调用服务的组件在同一个应用程序中,可以使用显式启动或隐式启

如灵****姐姐
实名认证
内容提供者


最近下载