泄漏服务连接意味着什么?

时间:2012-09-06 21:06:15

标签: android service

我正在为我的Android应用程序编写服务,我正在尝试了解绑定机制的工作原理。 如果我在一个活动的onCreate中绑定我的服务但是我没有在onStop或onDestroy中解除它,我得到错误:

android.app.ServiceConnectionLeaked: Service com.google.ipc.invalidation.ticl.android.AndroidInvalidationService has leaked ServiceConnection com.googl
                              e.ipc.invalidation.external.client.android.service.ServiceBinder$1@4177f8f8 that was originally bound here

所以我的问题是:泄漏连接的问题究竟是什么,我通过解除服务绑定来阻止什么?

3 个答案:

答案 0 :(得分:44)

通常,您的应用是唯一可以访问您的服务(或有用途)的应用。如果在此服务仍然运行的情况下销毁您的应用程序,则该服务不再具有目的。它将存在于内存消耗资源中,但什么都不做。通过在完成后解除绑定或停止服务,您可以返回这些资源,以便其他应用程序可以使用这些资源。

想想一个孩子将玩具传播到一个房间然后离开。房子里的其他人(父母,兄弟姐妹和客人)对他们没用,必须四处走动。玩具简直就是这样。如果孩子把它们拿走,那么任何人都可以随意使用房间。

希望有所帮助!

答案 1 :(得分:37)

当Android操作系统销毁Activity并发现A ServiceConnection仍然绑定到正在运行的Service时会发生这种情况,因此您需要先Unbind该服务然后销毁Activity 1}}

答案 2 :(得分:2)

即使在活动结束后,服务仍在运行。因此,您需要在onStop或onDestroy中取消绑定资源。

相关问题