|
|
51CTO旗下网站
|
|
移动端

2.3.3 Service 服务

《Android游戏开发从入门到精通》第2章Android 核心框架分析,本章将简要讲解Android 体系的具体组成,为读者进行本书后面知识的学习打下基础。本节为大家介绍Service 服务。

作者:王玉芹来源:机械工业出版社|2017-11-14 10:14

2.3.3 Service 服务

Service 是一个没有UI 且长驻系统的代码,最常见的例子是媒体播放器从播放列表中播放歌曲。在媒体播放器程序中,可能有一个或多个Activity 让用户选择播放的歌曲。在后台播放歌曲时无需Activity 干涉,用户希望在音乐播放的同时能够切换到其他界面。这样的话,媒体播放器Activity 就需要通过Context.startService()启动一个Service,这个Service 在后台运行以保持继续播放音乐。在媒体播放器被关闭之前,系统会保持音乐后台播放Service 的正常运行。可以用Context.bindService()方法连接到一个Service 上(如果Service 未运行的话,连接后还会启动它),连接后就可以通过一个Service 提供的接口与Service 进行通话。对音乐Service来说,其提供了暂停和重放等功能。

1. 如何使用服务

在Android 系统中有如下两种使用服务的方法。

(1)通过调用Context.startService()启动服务,调用Context.stopService()结束服务,startService()可以传递参数给Service。

(2)通过调用函数Context.bindService()启动,调用函数Context.unbindService()结束,还可以通过ServiceConnection 接口访问Service。

2.Service 的生命周期

在通过startService()启动服务后,即使调用函数startService()将进程结束,Service 还仍然存在,一直到有进程调用stopService()或者Service 自己灭亡(stopSelf())为止。在通过bindService()解除Service 后,Service 就和调用bindService()的进程一块消亡。也就是说当调用函数bindService()结束一个进程后,那么它绑定的Service 也要随之被结束,当然期间也可以调用unbindService()来结束Service。

当混合使用上述两种方式时,例如你startService()了,我bindService()了,那么只有你stoptService()了而且我也unbindService()了,这个Service 才会被结束。

3.进程生命周期

Android 系统将会尝试保留那些启动的或者绑定的服务进程,具体说明如下所示。

(1)如果该服务正在进程的onCreate()、onStart()或者onDestroy()这些方法中执行,那么主进程将会成为一个前台进程,以确保此代码不会停止。

(2)如果服务已经开始,那么它的主进程的重要性会低于所有的可见进程,但是会高于不可见进程。由于只有少数几个进程是用户可见的,所以只要内存不是特别低,该服务就不会停止。

(3)如果有多个客户端绑定了服务,只要客户端中的一个对于用户是可见的,就可以认为该服务可见。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读——网络组建(第2版)

《网管员必读——网络组建(第2版)》仍是以一个中等规模的模拟局域网组建为思路,较全面地介绍了与局域网组建相关的各方面知识和组建、配...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊