手机平台应用开发 第八章 服务.ppt

上传人:rrsccc 文档编号:10881714 上传时间:2021-06-10 格式:PPT 页数:18 大小:1.49MB
返回 下载 相关 举报
手机平台应用开发 第八章 服务.ppt_第1页
第1页 / 共18页
手机平台应用开发 第八章 服务.ppt_第2页
第2页 / 共18页
手机平台应用开发 第八章 服务.ppt_第3页
第3页 / 共18页
手机平台应用开发 第八章 服务.ppt_第4页
第4页 / 共18页
手机平台应用开发 第八章 服务.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《手机平台应用开发 第八章 服务.ppt》由会员分享,可在线阅读,更多相关《手机平台应用开发 第八章 服务.ppt(18页珍藏版)》请在三一文库上搜索。

1、第八章 服务,服务的创建 服务的生命周期 服务的启动方式 服务通信, 学习目标, 目录,服务的创建,服务的生命周期,服务的启动方式,点击查看本小节知识架构,服务通信,点击查看本小节知识架构,本章小结, 知识架构,8.3.1,start方式启动服务,bind方式启动服务,8.3.2,8.3 服务的启动方式,返回目录, 知识架构,8.4 服务通信,返回目录,8.4.1,本地服务通信和远程服务通信,案例音乐播放器,8.4.2,案例远程调用支付宝,8.4.3,什么是服务?,8.1 服务的创建,服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一

2、应用程序,服务仍可以在后台运行。,8.1 服务的创建,8.1 服务的创建,服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。 1、创建服务 public class MyService extends Service public IBinder onBind(Intent arg0) return null; 2、在清单文件中配置 ,8.2 服务的生命周期,与其他组件不同的是,Service不能自己主动运行,需要调用相应的方法来启动。 启动服务的方法是Context.startService()和Context.bindService()。使用不

3、同的方法启动服务,服务的生命周期也会不同。,8.2 服务的生命周期,1、startService方式开启服务的生命周期 服务会执行onCreate() onStartCommand()方法,服务处于运行状态,直到自身调用stopSelf()方法或者其他组件调用stopService()方法时服务停止,最终被系统销毁。 服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系。 2、bindService方式开启服务的生命周期 服务会执行onCreate() onBind()方法,服务处于绑定状态, 客户端通过unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务。 服务

4、与开启者的状态有关,当调用者销毁了,服务也会被销毁。,8.3 服务的启动方式,8.3.1 start方式启动服务,使用startService()方式开启服务的具体代码如下所示: Intent intent = new Intent(this, StartService.class); Context.startService(intent); Context.stopService(intent); 服务也是Android中的四大组件之一,因此需要在清单文件中注册 ,当程序使用startService()和stopService()启动、关闭服务时,服务与调用者之间基本不存在太多的关联,也无

5、法与访问者进行通信、数据交互等。如果服务需要与调用者进行方法调用和数据交互时,应该使用bindService()和unbindService()启动、关闭服务。 bindService(Intent service,ServiceConnection conn, int flags) Intent对象用于指定要启动的Service ServiceConnection对象用于监听调用者与Service的连接状态。 flags指定绑定时是否自动创建Service(如果Service还未创建)。,8.3 服务的启动方式,8.3.2 bind方式启动服务,8.4.1 本地服务通信和远程服务通信,。,在

6、Android系统中,服务的通信方式有两种,一种是本地服务通信,一种是远程服务通信。 本地服务通信是指应用程序内部的通信,而远程服务通信是指两个应用程序之间的通信。使用这两种方式进行通信时必须满足一个前提,就是服务必须以绑定方式开启。,8.4 服务通信,8.4.1 本地服务通信和远程服务通信,。,1、本地服务通信 在进行本地服务通信时,可以使用Service类提供的IBinder onBind(Intent intent)方法,该方法返回的IBinder对象会作为参数传递给ServiceConnection类中onServiceConnected(ComponentName name,IBin

7、der service)方法,这样访问者就可以通过IBinder对象与Service进行通信。,8.4 服务通信,8.4.1 本地服务通信和远程服务通信,。,2、远程服务通信 远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言(Interface Definition Language),其语法格式非常简单,与Java中定义接口很相似。 package cn.itcast.service; interface IService String getName(); int getPrice(); 定义好AIDL接口

8、之后,接着需要在应用程序中创建Service的子类。该Service的onBind()方法所返回的IBinder对象应该是ADT所生成的IService.Stub的子类。,8.4 服务通信,8.4.2 案例音乐播放器,。,8.4 服务通信,在生活中经常会用到服务,为了让大家更好的理解服务通信,接下来通过一个音乐播放器的案例来演示如何使用服务进行通信。,8.4.3 案例远程调用支付宝,。,8.4 服务通信,在日常生活中,经常会用到支付宝,例如使用支付宝购买游戏中的付费道具。其中,点击打开支付宝付费的过程就使用了远程服务。接下来通过模拟调用支付宝的案例来对远程服务的绑定与使用进行讲解。,8.5 本章小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1