Android移动应用开发PPT课件(共9章)第7章 服务

上传人:sat****105 文档编号:298852092 上传时间:2022-05-26 格式:PPTX 页数:31 大小:2.20MB
返回 下载 相关 举报
Android移动应用开发PPT课件(共9章)第7章 服务_第1页
第1页 / 共31页
Android移动应用开发PPT课件(共9章)第7章 服务_第2页
第2页 / 共31页
Android移动应用开发PPT课件(共9章)第7章 服务_第3页
第3页 / 共31页
Android移动应用开发PPT课件(共9章)第7章 服务_第4页
第4页 / 共31页
Android移动应用开发PPT课件(共9章)第7章 服务_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Android移动应用开发PPT课件(共9章)第7章 服务》由会员分享,可在线阅读,更多相关《Android移动应用开发PPT课件(共9章)第7章 服务(31页珍藏版)》请在金锄头文库上搜索。

1、Android应用开发教程第7章 服务目录 | CONTENTS7.1 Service简介 7.3 Service的使用7.4 访问系统Service7.2 Service的生命周期7.5 异步消息处理 Service简介7.1Service(服务)是一种应用组件,用于执行一些持续性的、耗时长的并且无需与用户界面交互的操作。例如,服务可以处理网络事务、播放音乐、震动、闹钟,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。Service拥有独立的生命周期。Service没有界面(最多只能显示一个通知)Android系统中提供了大量可以直接调用的系统Service。Servic

2、e7.1 Service简介服务对象服务对象ConteContext t中对应的服务名称中对应的服务名称常量常量功能功能AlarmManagerALARM_SERVICE闹钟服务AudioManagerAUDIO_SERVICE音频服务BluetoothAdapterBLUETOOTH_SERVICE蓝牙服务ConnectivityManagerCONNECTIVITY_SERVICE网络连接服务DownloadManagerDOWNLOAD_SERVICE针对HTTP的下载服务NotificationManagerKEYGUARD_SERVICE键盘锁服务LocationManagerLOC

3、ATION_SERVICEGPS定位服务等PowerManagerPOWER_SERVICE电源服务SensorManagerSENSOR_SERVICE传感器服务VibratorVIBRATOR_SERVICE振动器服务WifiManagerWIFI_SERVICEWIFI服务7.1 Service简介 Service的生命周期7.27.2 Service的生命周期p通过startService()方法启动p通过bingService()方法启动ServiceService生命周期与启动方式有关生命周期与启动方式有关 方法方法功能描功能描述述onCreate()用于创建Service组件on

4、StartCommand(Intentintent,intflags,intstarted)通过Start方式启动Service时调用onBind(Intentintent)通过Bind方式启动ServiceonUnbind(Intentintent)通过Bind方式取消Service绑定onRebind(Intentintent)通过Bind方式重新绑定ServiceonDestroy()用于销毁ServiceServiceService生命周期相关的回调方法生命周期相关的回调方法7.2 Service的生命周期 onStartCommand()方法的返回值可以是以下三种:pService.

5、START_NOT_STICKY:不会自动重启。直到接受到新的Intent对象,这个服务才会被重新创建。最安全的选项,用来避免在不需要的时候运行服务。pService.START_STICKY:资源可用时自动重启,但不保留Intent对象。适用于不执行命令的媒体播放器(或类似的服务),它只是无限期的运行着并等待工作的到来。pService.START_REDELIVER_INTENT:自动重启并将最后一个Intent对象传入onStartCommand()。适用于那些应该立即恢复正在执行的工作的服务,如下载文件。onStartCommand()方法的返回值用于决定当Service在某种情况下被

6、系统异常终止后能否被系统自动启动。public int onStartCommand(Intent intent, int flags, int startId)onStartCommand()方法方法三个参数:pintent为启动Service时所传入的Intent对象。pstartId为启动请求的ID,用于唯一标识一次启动请求,在调用stopSelfResult(intstartId)方法停止服务时可传入特定的startId,可以更安全地根据ID停止服务。pflags代表service的启动方式,与onStartCommand()方法返回值有一定的关系。取值可以为:0,在正常创建Servi

7、ce的情况下,传入的flags为0。Service.START_FLAG_REDELIVERY,如果onStartCommand返回的是START_REDELIVER_INTENT,并且Service被系统清理掉了,那么重新创建Service,调用onStartCommand的时候,传入的intent不为null,而传入的flags为TART_FLAG_REDELIVERY。Service.START_FLAG_RETRY,如果Service创建过程中,onStartCommand方法未被调用或者没有正常返回的异常情况下,再次尝试创建,传入的flags就为START_FLAG_RETRY。on

8、StartCommand()方法方法public int onStartCommand(Intent intent, int flags, int startId)当一个组件通过调用bindService()与服务绑定时,系统将调用此方法。在此方法的实现中,必须返回一个IBinder接口的实现类,供客户端与服务进行通信。onBind()方法是Service基类中的唯一的抽象方法,子类都必须重写实现。无论哪种方法启动服务,此方法必须重写,但在startService()方法启动服务的情况下直接返回null。onBind()方法方法publicIBinderonBind(Intentintent)

9、参数intent为绑定这个Service时传入的Intent对象。返回值是一个IBinder对象,此对象定义了客户端与服务进行交互时所需的编程接口。在此方法的实现中,必须返回一个IBinder接口的实现类,供客户端与服务进行通信。如果服务仅供本地应用使用,不需要跨进程工作,则可以实现自有Binder类,让客户端通过该类直接访问服务中的公共方法。onBind()方法方法onBind()方法是Service基类中的唯一的抽象方法,子类都必须重写实现。无论哪种方法启动服务,此方法必须重写,但在startService()方法启动服务的情况下直接返回null。 Service的使用7.3创建Servi

10、ce配置Service启动Service7.3 Service的使用在程序包名上点击右键选择【New】【Service】【Service】选项,在弹出窗口中输入服务的名称即可完成创建。服务创建完成后,Android Studio会自动在AndroidManifest.xml中对服务进行注册。若采用自行创建Java类继承Service类的方式创建服务,则需要手动在清单文件中进行注册。7.3.1 创建和配置 Servicepublic class public class MyService extends extends Service public public MyService() Ove

11、rride/ onBind()方法是Service子类必须实现的方法,该方法返回一个IBinder 对象,/ 应用程序可以通过该对象与服务通信。 public public IBinder onBind(Intent intent) / TODO: Return the communication channel to the service.TODO: Return the communication channel to the service. throw new throw new UnsupportedOperationException(Not yet implementedNot

12、 yet implemented); 7.3.1 创建和配置 Service服务服务的名称的名称表示系统是否能够实表示系统是否能够实例化该组件例化该组件表示该服务是否能够表示该服务是否能够被其他应用程序组件被其他应用程序组件调用调用7.3.1 创建和配置 ServiceService可在后台无限期运行,除非Service调用自身的stopSelf()方法或者其它组件调用stopService()方法停止服务。当然在系统资源不足的情况下,Android也会结束Service。一个组件通过startService()方法启动Service后,该组件和Service之间并没有关联,即使组件被销毁,也

13、不影响Service的运行。startService()startService()方法启动方法启动ServiceServiceService会与启动它的组件绑定,组件(如Activity)可以向Service发送请求,或者调用Service的方法,被绑定的Service会接收信息并响应,可以通过绑定服务进行进程间通信。而且同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务。bindService()bindService()方法启动方法启动ServiceService7.3.2 startService()方法启动ServicepublicclassMainAct

14、ivityextendsAppCompatActivityOverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = new Intent(this, MyService1.class); startService(intent);7.3.2 startService()方法启动Service有时可能需要从Activity组件中去调用Service中的方法,那么可以通

15、过bindService()方法启动服务。通过bindService()方法启动服务时,服务会与组件绑定。此时组件(如Activity)可以向Service(也就是服务端)发送请求,或者调用Service(服务端)的方法,此时被绑定的Service(服务端)会接收信息并响应,甚至可以通过绑定服务进行执行进程间通信。必须提供一个IBinder接口的实现类,该类用以提供客户端与服务进行交互的编程接口。通过unbindService()方法来解除绑定关系。7.3.3 bindService()方法启动ServicebindService()方法public boolean bindService(

16、Intent service, ServiceConnection conn, int flags)参数service:绑定服务时传入的Intent对象参数flags:用于决定Service的一些行为规则,常用的取值:0:不自动创建ServiceBIND_AUTO_CREATEBIND_NOT_FOREGROUNDBIND_WAIVE_PRIORITYBIND_IMPORTANTIND_ABOVE_CLIENTBIND_ADJUST_WITH_ACTIVITY参数conn:ServiceConnection接口类型的对象,监听调用者与Service之间的连接情况。在绑定或解绑Service时,系统会调用ServiceConnection接口对应的回调方法。ServiceConnection接口包含以下两个方法:voidonServiceConnected(ComponentNamename,IBinderservice)name:绑定的service的ComponentNameservice:绑定的service的onBind()方法的返回值。voidonServiceDisconne

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

当前位置:首页 > 高等教育 > 大学课件

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