12.Android学习之Service应用(一)

目录

12.Service应用(一)

1.Service概述

1-1.Service 的分类

1-2.Service的生命周期

2.Service 的基本用法

2-1.创建与配置Service

2-2.启动和停止Service


12.Service应用(一)

1.Service概述

Service (服务)是能够在后台长时间运行,并且不提供用户界面的应用程序组件。其他应用程序组件能启动Service,并且即便用户切换到另一个应用程序,Service 还可以在后台运行。此外,组件能够绑定到Service并与之交互,甚至执行进程间通信(IPC)。例如,Service 能在后台处理网络事务、播放音乐、执行文件操作或者与Content Provider通信。

1-1.Service 的分类

Service按照启动方式可以分为以下两种类型。

◆Started Service:当应用程序组件(如Activity)通过调用startService() 方法启动Service时,Service处于启动状态。一旦启动, Service 能在后台无限期运行。

◆Bound Service:当应用程序组件通过调用bindService()方法绑定到Service时,Service处于绑定状态。多个组件可以同时绑定到一个Service 上,当它们都解除绑定时,Service 被销毁。

Started Service与Bound Service的区别如表12.1所示。

表12.1 Started Service与Bound Service的区别

Started Service Bound Service
使用startService()方法启动 调用bindService()方法绑定
通常只启动,不返回值 发送请求,得到返回值
启动Service的组件与Service之间没有关联,即使关闭该组件,Service也会一直运行 启动Service的组件与Service绑定在一起, 如果关闭该组件,Service就会停止运行。
回调onStartCommand()方法,允许组件启动Service 目调onBind()方法,允许组件绑定Service

注:Service可以同时属于这两种类型,既可以启动(无限期运行)又能绑定。不管应用程序是否为启动状态、绑定状态或者两者兼有,都能通过Intent对象使用Service,就像使用Activity那样。然而,开发人员可以在配置文件中将Service声明为私有的,从而阻止其他应用程序访问。

1-2.Service的生命周期

Service的生命周期比Activity简单很多,但是却需要开发人员更加关注Service如何创建和销毁,因为Service可能在用户不知情的情况下在后台运行。

Service的生命周期可以分成两个不同的路径:

◆通过startService()方法启动Service

当其他组件调用startService()方法时,Service 被创建,并且无限期运行,其自身必须调用stopSelf()方法或者其他组件调用stopService()方法来停止Service。当Service停止时,系统将其销毁。

◆通过bindService()方法启动Service

当其他组件调用bindService()方法时,Service 被创建,接着客户端通过IBinder接口与Service通信,客户端通过unbindService()方法关闭连接。多个客户端能绑定到同一个Service,并且当它们都解绑定时,系统销毁Service (Service 不需要被停止)。

这两条路径并非完全独立,即开发人员可以绑定已经使用startService()方法启动的Service。例如,后台音乐Service能使用包含音乐信息的Intent 通过调用startService()方法启动。当用户需要控制播放器或者获得当前音乐信息时,可以调用bindService()方法绑定Activity到Service。此时,只有stopService()和stopSelf()方法全部被客户端解绑定时才能停止Service。

为了创建Service,开发人员需要创建Service类或其子类的子类。在实现类中,需要重写一些处理Service生命周期重要方面的回调方法,并根据需要提供组件绑定到Service的机制。需要重写的重要回调方法如表12.2所示。

<
方法名 描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值