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

Teo*_*ald 19 service android

我正在为我的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
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*Sam 46

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

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

希望有所帮助!

  • +1!关于这个主题的最有用的答案之一,特别是由于*伟大*类比给出! (9认同)

Moh*_*san 40

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