首页 理论教育 Android游戏开发服务-从入门到精通

Android游戏开发服务-从入门到精通

时间:2023-10-22 理论教育 版权反馈
【摘要】:可以用Context.bindService()方法连接到一个Service上,连接后就可以通过一个Service提供的接口与Service进行通话。对音乐Service来说,其提供了暂停和重放等功能。通过调用Context.startService()启动服务,调用Context.stopService()结束服务,startService()可以传递参数给Service。通过调用函数Context.bindService()启动,调用函数Context.unbindService()结束,还可以通过ServiceConnection接口访问Service。在通过bindService()解除Service后,Service就和调用bindService()的进程一块消亡。

Android游戏开发服务-从入门到精通

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。(www.xing528.com)

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

3.进程生命周期

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

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

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

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈