如果客户端进程被Android杀死,我们会泄漏Android服务连接吗?

3

情况: 我有一个远程服务的客户端活动“X”(使用AIDL),在onCreate()中调用bindService(),并在onDestroy()中调用unbindService()。假设该活动已启动,但不在前台(onStop()已发生)。

据说,当Android系统需要更多内存时,可能会杀死优先级较低的另一个活动进程(可能是“X”)。

如果例如,Android系统决定杀死“X”的进程,则根据活动生命周期图表,在需要更多内存时杀死进程时,将不会调用onDestroy()http://developer.android.com/guide/topics/fundamentals/activities.html

问题: 这会导致它泄漏服务连接吗?在onStart()onStop()中绑定和解绑服务会更安全吗?

提前感谢!

1个回答

2

问题:这会导致服务连接泄漏吗?

ServiceConnection对象将在进行“X”操作时处于进程中,因此当该进程终止时,该对象将消失。


哦,好的...但是当客户端绑定到远程服务时,它只涉及客户端进程中的资源吗?我的意思是,Android系统本身不保留任何涉及绑定的资源(这将在调用unbindService()时释放)吗? - Surya Wijaya Madjid
@Surya Wijaya Madjid:可能有一些问题。但是,清理工作应该由操作系统完成,即使它最终泄漏了,也不太可能占用大量堆空间。除非MAT显示您的服务进程存在显著泄漏迹象,否则我不会担心它。 - CommonsWare
嗯...好的。所以,总的来说,在onCreate()中执行bindService(),在onDestroy()中执行unbindService()仍然是一个不错的选择。感谢您的回答 :) - Surya Wijaya Madjid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接