码迷,mamicode.com
首页 > 移动开发 > 详细

Android笔记01:有关Service的一些知识

时间:2018-04-29 14:28:36      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:client   binder   组件   后台   简单   start   man   .com   播放   

一、什么是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的一些知识

标签:client   binder   组件   后台   简单   start   man   .com   播放   

原文地址:https://www.cnblogs.com/alyssayoung/p/8970878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!