华联学院《android软件开发》课件10后台默默的劳动者--探究服务

上传人:东*** 文档编号:270894625 上传时间:2022-03-27 格式:PDF 页数:20 大小:779.04KB
返回 下载 相关 举报
华联学院《android软件开发》课件10后台默默的劳动者--探究服务_第1页
第1页 / 共20页
华联学院《android软件开发》课件10后台默默的劳动者--探究服务_第2页
第2页 / 共20页
华联学院《android软件开发》课件10后台默默的劳动者--探究服务_第3页
第3页 / 共20页
华联学院《android软件开发》课件10后台默默的劳动者--探究服务_第4页
第4页 / 共20页
华联学院《android软件开发》课件10后台默默的劳动者--探究服务_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《华联学院《android软件开发》课件10后台默默的劳动者--探究服务》由会员分享,可在线阅读,更多相关《华联学院《android软件开发》课件10后台默默的劳动者--探究服务(20页珍藏版)》请在金锄头文库上搜索。

1、第十章后台默默的劳动者-探究服务Android软件开发主讲:王海Service简介Service组件表示一种服务,专门用于执行一些持续性的、耗时长的并且无需与用户界面交互的操作Service的运行是不可见的,通常用于执行一些无需用户交互,并需要持续运行的任务Service拥有独立的生命周期Service没有界面(最多只能显示一个通知),当Service所对应的应用程序界面不可见时,Service仍运行于应用程序主线程中Android系统中提供了大量可以直接调用的系统Service,例如播放音乐、震动、闹钟、通知栏消息等Android软件开发主讲:王海Service分类按照运行的进程不同,可以将

2、Service分为: 本地(Local)Service 远程(Remote)Service按照运行的形式分为: 前台Service 后台Service按照使用Service的方式可以分为: 启动(Start)方式Service 绑定(Bind)方式Service 混合方式ServiceAndroid软件开发主讲:王海创建Service的步骤通过继承Service的方式来定义一个Service的子类在应用程序的AndroidManifest.xml中配置Service组件Android软件开发主讲:王海编写Service类【语法】【案例8- 1】MyService1.javapublic abs

3、tract IBinder onBind(Intent intent);/ 一个空的Service示例public class MyService1 extends Service Overridepublic IBinderonBind(Intent intent) return null;Android软件开发主讲:王海配置Service在AndroidManifest.xml中,每个Service组件都需要在元素的一个子元素中进行配置Android软件开发主讲:王海启动Service 启动Service有Start和Bind两种方式Intent intent = new Intent(t

4、his, MyService1.class);startService(intent);Android软件开发主讲:王海Service生命周期回调方法方法功能描述onCreate()用于创建Service组件onStartCommand(Intent intent, int flags, intstarted)通过Start方式启动Service时调用onBind(Intent intent)通过Bind方式启动ServiceonUnbind(Intent intent)通过Bind方式取消Service绑定onRebind(Intent intent)通过Bind方式重新绑定Serviceo

5、nDestroy()用于销毁ServiceAndroid软件开发主讲:王海Start方式启动Service调用调用startService()onCreate()onStartCommand()Service运行中运行中服务被自身或服务被自身或客户端停止客户端停止onDestroy()Service停止停止活动期活动期Android软件开发主讲:王海Bind方式启动Service调用调用bindService()onCreate()onBind()客户端绑定至客户端绑定至ServiceonDestroy()Service停止停止活动期活动期onUnBind()所有的客户端通过调用所有的客户端通

6、过调用unbindService()解除绑定解除绑定Android软件开发主讲:王海混合方式的ServiceService运行中运行中客户端已绑定客户端已绑定除特殊情况外除特殊情况外,onStartCommand()和和onBind()被调用被调用onUnbind()所有的客户端通过调用所有的客户端通过调用onUnbindService()解除绑定解除绑定onDestroy()服务也通过服务也通过stopSelf()或或stopService()停止了吗停止了吗?是是Service停止停止Service运行中运行中否否onUnbind()返回返回true?客户端调用客户端调用bindServi

7、ce()onBind()onRebind()否否是是Android软件开发主讲:王海进程类型前台进程(Foreground Process)可见进程(Visible Process)服务进程(Service Process)后台进程(Background Process)Android软件开发主讲:王海前台ServiceService启动后,其所在进程默认是服务进程,优先级并不高通过Service的startForeground()方法将Service改为前台进程【语法】 参数id:通知的id 参数notification:需要显示的通知 调用stopForeground()方法取消其前台状态

8、 【语法】public final void startForeground(int id, Notification notification)public final void stopForeground(booleanremoveNotification)Android软件开发主讲:王海Service中执行耗时任务针对在Service中执行耗时任务,Android还专门提供了一种特殊的Service:IntentService抽象类android.app.IntentService是Service的子类IntentService会自动开始一个新线程来执行任务,并在任务执行完毕后停止Se

9、rvice使用IntentService非常简单,只需继承IntentService并重写onHandleIntent()方法即可Android软件开发主讲:王海远程Service远程Service允许被另一个进程中的组件访问AIDL(Android Interface Definition Language,Android接口定义语言)是Android提供的一种专门用于描述进程间通信接口的语言使用AIDL可以简化在进程间交换数据的代码,使客户端可以像本地Service那样直接绑定远程ServiceAndroid软件开发主讲:王海系统自带ServiceAndroid提供了许多系统级别的Serv

10、ice,通过这些服务应用程序可以方便的调用系统功能系统服务都是通过Context.getSystemService(String serviceName)方法获取服务对象Context中对应的服务名称常量功能AccessibilityManagerACCESSIBILITY_SERVICE通过已注册的事件监听器将UI事件反馈给用户AccountManagerACCOUNT_SERVICE账户服务ActivityManagerACTIVITY_SERVICE管理Activity、Service等各种组件AlarmManagerALARM_SERVICE闹钟服务AppOpsManagerAPP_O

11、PS_SERVICE在设备操作时跟踪应用AudioManagerAUDIO_SERVICE音频服务BluetoothAdapterBLUETOOTH_SERVICE蓝牙服务ClipboardManagerCLIPBOARD_SERVICE剪切板服务Android软件开发主讲:王海服务对象Context中对应的服务名称常量功能ConnectivityManagerCONNECTIVITY_SERVICE网络连接服务ConsumerIrManagerCONSUMER_IR_SERVICE红外信号服务DevicePolicyManagerDEVICE_POLICY_SERVICE设备监听服务Disp

12、layManagerDISPLAY_SERVICE显示设备管理DownloadManagerDOWNLOAD_SERVICE针对HTTP的下载服务DropBoxManagerDROPBOX_SERVICE获取 DropBoxManager 实例以记录诊断日志InputMethodManagerINPUT_METHOD_SERVICE输入法的管理服务程序InputManagerINPUT_SERVICE输入设备管理NotificationManagerKEYGUARD_SERVICE键盘锁服务LayoutInflaterLAYOUT_INFLATER_SERVICE根据XML生成布局的服务Loc

13、ationManagerLOCATION_SERVICEGPS定位服务等NfcManagerNFC_SERVICENFC服务NotificationManagerNOTIFICATION_SERVICE通知服务PowerManagerPOWER_SERVICE电源服务PrintManagerPRINT_SERVICE打印服务SearchManagerSEARCH_SERVICE搜索服务SensorManagerSENSOR_SERVICE传感器服务StorageManagerSTORAGE_SERVICE系统存储服务TelephonyManagerTELEPHONY_SERVICE电话服务Te

14、xtServicesManagerTEXT_SERVICES_MANAGER_SERVICE文字服务,如拼写检查等UiModeManagerUI_MODE_SERVICE界面模式服务,如夜间模式、驾车模式等UsbManagerUSB_SERVICEUSB管理服务UserManagerUSER_SERVICE用户管理服务VibratorVIBRATOR_SERVICE振动器服务WallpaperServiceWALLPAPER_SERVICE壁纸服务WifiP2pManagerWIFI_P2P_SERVICEWIFI-P2P连接服务WifiManagerWIFI_SERVICEWIFI服务Win

15、dowManagerWINDOW_SERVICE系统窗口服务Android软件开发主讲:王海系统自带ServiceNotificationManager用于在界面顶部的通知栏显示消息,以一种标准的方式向用户显示提示信息DownloadManager提供了一种标准简洁的HTTP下载解决方案Android软件开发主讲:王海本章总结按照运行的进程不同,可以将Service分为本地Service和远程Service按照运行的形式分为前台Service和后台Service按照使用Service的方式可以分为启动方式Service、绑定方式Service、和混合式ServiceService组件需要通过C

16、ontext对象启动,有两种启动方式,Start方式和Bind绑定方式,分别对应于Context的startService()和bindService()方法无论是Start还是Bind方式启动Service,都会经历onCreate()和onDestroy()方法;如果是Start方式启动,在启动时会调用onStartCommand()方法;如果是Bind方式启动,在启动时会调用onBind()方法,取消绑定时会调用onUnbind()方法,重新绑定时会调用onRebind()方法start方式启动的Service必须自己管理生命周期,并会一直运行下去,除非Service调用自身的stopSelf()方法,或其他组件对该Service调用stopService()方法Android软件开发主讲:王海本章总结bind方式启动的Service会和启动它的组件关联在一起并可以进行通信Service启动后,其所在进程默认是服务进程,优先级并不高,如果是非常重要的Service,可以通过调用Service的startForeground()方法将其改为前台进程IntentService是Ser

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

当前位置:首页 > IT计算机/网络 > 手机/mobile开发

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号