当前位置:文档之家› 第10章 Android中服务(Service)的使用

第10章 Android中服务(Service)的使用

河北师范大学软件学院
《 Android 课程》实验手册
第十章 Android 中服务( Service )的使用
编 写 人:武永亮 编写日期:2012-8-23
《Android 课程》-实验手册
第 1 页 共 21 页
河北师范大学软件学院
修 改 记 录 修改时间 2012.8.23 2013-1-31 修改人 武永亮 李玮玮 修改内容 文档创建 文档修改
第 4 页 共 21 页 《Android 课程》-实验手册
河北师范大学软件学院
getContentResolver()等方法; 6. Service 的常用回调函数 abstract IBinder onBind (Intent intent) :该方法是 Service 子类必须实现的方法。该方 法返回的 IBinder 对象可与 Service 组件进行通信; void onCreate () :当 Service 被第一次创建时回调该方法; void onDestroy () :当 Service 被关闭前回调该方法; void onStartCommand (Intent intent, int flags, int startId) : 当 客 户 端 调 用 startService(intent) 方法启动 Service 时回调该方法; 该方法的早期版本是 void onStart(Intent intent, int startId) 。 boolean onUnbind (Intent intent) :当 Service 上绑定的所有客户端都断开连接时回调 该方法; 7. Service 的启动流程
《Android 课程》-实验手册
第 5 页 共 21 页
河北师范大学软件学院

如果 Service 还没有运行,则 android 先调用 onCreate() ,然后调用 onStart() ; 如果 Service 已经运行,则只调用 onStart() ,所以一个 Service 的 onStart 方法可能会 重复调用多次。
图 10.1 Service 生命周期 (一) context.startService() 启动流程: context.startService() -> onCreate() -> onStart() -> Service running -> context.stopService() -> onDestroy() -> Service stop

如果 stopService 的时候会直接 onDestroy, 如果是调用者自己直接退出而没有调用 stopService 的话, Service 会一直在后台运行,
该 Service 的调用者再启动起来后可以通过 stopService 关闭 Service。 所以调用 startService 的生命周期为:onCreate --> onStart (可多次调用) --> onDestroy (二) context.bindService() 启动流程: context.bindService() -> onCreate() -> onBind() -> Service running -> onUnbind() -> onDestroy() -> Service stop onBind() 将返回给客户端一个 IBind 接口实例,IBind 允许客户端回调服务的方法,比如得 到 Service 的实例、运行状态或其他操作。这个时候把调用者(Context,例如 Activity)会 和 Service 绑定在一起,Context 退出了,Srevice 就会调用 onUnbind->onDestroy 相应退 出。 所以调用 bindService 的生命周期为:onCreate --> onBind( 只一次,不可多次绑定) --> onUnbind --> onDestory。 在 Service 每一次的开启关闭过程中,只有 onStart 可被多次调用(通过多次 startService 调 用),其他 onCreate,onBind,onUnbind,onDestory 在一个生命周期中只能被调用一次 8. Service 生命周期 Service 的生命周期并不像 Activity 那么复杂,它只继承了 onCreate() 、onStart() 、 onDestroy() 三个方法 当我们第一次启动 Service 时,先后调用了 onCreate() 、onStart() 这两个方法;当停止 Service 时,则执行 onDestroy() 方法。 这里需要注意的是,如果 Service 已经启动了,当我们再次启动 Service 时,不会在执 行 onCreate() 方法,而是直接执行 onStart() 方法。 它可以通过 Service.stopSelf() 方法或者 Service.stopSelfResult() 方法来停止自己,只 要调用一次 stopService() 方法便可以停止服务,无论调用了多少次的启动服务方法。
《Android 课程》河北师范大学软件学院
目录
一、内容概述................................................................................................................... 4 二、实验一 Service 生命周期........................................................................................... 4 2.1 实验目的 ............................................................................................................ 4 2.2 准备知识 ............................................................................................................ 4 2.3 实验步骤 ............................................................................................................ 6 2.4 实验结论 ...........................................................................................................11 三、实验二 自定义 Service ............................................................................................ 12 3.1 实验目的 .......................................................................................................... 12 3.2 实验步骤 .......................................................................................................... 12 3.4 实验结论 .......................................................................................................... 14 四、实验三 系统常见 Service 调用 ................................................................................. 14 4.1 实验目的 .......................................................................................................... 14 4.2 准备知识 .......................................................................................................... 14 4.3 实验步骤 .......................................................................................................... 15 4.4 实验结论 .......................................................................................................... 17 4.5 扩展知识——Android 的系统服务一览 .............................................................. 18 五、作业........................................................................................................................ 21 5.1 自定义 Service................................................................................................... 21 5.2 访问自定义 Service............................................................................................ 21 5.3 调用系统短信管理器(SmsManager )服务,实现发送短信功能 ......................... 21
相关主题