Android Service简介

Android Service简介

接下来我们将从以下几个方面介绍Service

  1. 什么是Service
  2. Service的生命周期
  3. Service相关权限
  4. 进程生命周期

什么是Service

ServiceAndroid四大组件之一(PS:四大组件为:Service,Broadcast,Content Provider,Activity),用于展示一个应用的长时间操作,这种操作的特点是不与用户交互或者是仅仅为其他应用提供功能性需求。
每一个Service都必须使用<service>标签在AndroidManifest.xml文件中进行声明,一个Service就像应用的其它组件一样,运行在应用的主线程(PS:UI线程),也就意味着对一个Service而言,一旦需要进行CPU调度(例如说播放音乐)或者进行耗时操作(例如说网络请求),就需要在自己内部的工作线程中去执行操作。
要了解Service是什么,首先我们应该清楚Service不是什么:

  1. Service不是一个单独的进程 ,一个Service并不意味着一个独立的进程,它是运行在与应用相同的进程中。
  2. Service不是一个线程

其实Service很简单,它主要有两个特点:

  1. 直接告诉系统那些东西是后台任务,即使用户并不参与交互,与此相符的是Service的Start启动方式(Context.startService()),在这种情况下,系统会去执行Service的动作,直到Service或者其它组件显式停止它。
  2. 方便一个应用为其他应用提供功能性方法,与此相符的是Service的Bind启动方式(Context.bindService()),这种方式下允许创建一种常驻的Connection,以便与Service交互数据。

对于一个Service而言,不管以何种方式启动,其首先进入的是onCreate()方法。

Service的生命周期

服务的生命周期比 Activity 的生命周期要简单得多。但是,密切关注如何创建和销毁服务反而更加重要,因为服务可以在用户没有意识到的情况下运行于后台。

服务生命周期(从创建到销毁)可以遵循两条不同的路径:

1.启动服务
该服务在其他组件调用 startService() 时创建,然后无限期运行,且必须通过调用 stopSelf() 来自行停止运行。此外,其他组件也可以通过调用 stopService() 来停止服务。服务停止后,系统会将其销毁。
2.绑定服务
该服务在另一个组件(客户端)调用 bindService() 时创建。然后,客户端通过 IBinder 接口与服务进行通信。客户端可以通过调用 unbindService() 关闭连接。多个客户端可以绑定到相同服务,而且当所有绑定全部取消后,系统即会销毁该服务。 (服务不必自行停止运行。)
这两条路径并非完全独立。也就是说,可以绑定到已经使用 startService() 启动的服务。例如,可以通过使用 Intent(标识要播放的音乐)调用 startService() 来启动后台音乐服务。随后,可能在用户需要稍加控制播放器或获取有关当前播放歌曲的信息时,Activity 可以通过调用 bindService() 绑定到服务。在这种情况下,除非所有客户端均取消绑定,否则 stopService() 或 stopSelf() 不会真正停止服务。
下图是官网上的Service生命周期图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值