Android笔记01:有关Service的一些知识
Posted Alyssa_young
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android笔记01:有关Service的一些知识相关的知识,希望对你有一定的参考价值。
一、什么是Service?
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。
二、Service的两种状态
Service 有两种状态 started(启动的) 和 bound(绑定) 。
1. 启动的服务
通过客户端,通常是一个Activity,调用startService即可启动一个服务,我们称之为StartedService,或者是UnboundService。
service通过startService启动之后,就会独立的运行,与客户端Activity无关,Activity的存在与否不影响service的运行。只有当客户端调用stopService()或者其本身调用stopSelf()时,service才会停止,然后系统将其销毁
2. 绑定的服务
通过客户端调用bindService即可将此客户端与一个Service绑定,不过要注意,bindService方法中需要传入一个ServiceConnection实例,来监测服务绑定成功或者失败。
通过bindService将 activity与service绑定之后,客户端(activity)可以通过一个IBinder接口与service通信。当activity结束的时候,需要手动调用unbindService解除与service的绑定。一个service可以与多个客户端绑定,当所有客户端都解除绑定后,系统将会销毁service。
3. 一个服务可以既是unbound也是bound
这两种方式并不是完全独立的,一个service被startService启动之后,也可以被客户端绑定。这时如果调用stopService或者stopSelf,系统并不会销毁service,除非所有客户端都解除与此service的绑定。
三、Serviced的声明周期
- 启动的服务:从onStartCommand()接收并处理startService传递过来的intent,并在客户端调用stopService或者服务本身调用stopSelf结束
- 绑定的服务:从onBind()接收并处理bindService传递过来的intent,并在客户端调用unbindService时结束
简单一句话来说,一个既被启动又被绑定的service,只有当所有与之绑定的client全部解除绑定,并且调用stopService或者stopSelf,系统才会销毁此服务。
以上是关于Android笔记01:有关Service的一些知识的主要内容,如果未能解决你的问题,请参考以下文章
ANDROID_MARS学习笔记_S01原始版_017_绑定SERVICE
ANDROID_MARS学习笔记_S01原始版_018_SERVICE之Parcel
Android-Android中service与application的生命周期有关系吗