gpt4 book ai didi

android - FinalizerReference导致的Service Binder内存泄露

转载 作者:太空狗 更新时间:2023-10-29 14:40:18 24 4
gpt4 key购买 nike

我已经完全按照此处 Android 文档中的描述创建了绑定(bind)服务: https://developer.android.com/guide/components/bound-services.html#Binder

我的代码与示例中的代码一字不差。我有相同的 LocalBinder 内部类扩展 Binder 并返回封闭服务。我的 Activity 绑定(bind)到服务,在 ServiceConnection 回调中从 Binder 获取对服务的引用,并使用该引用调用服务中的方法。它在 onStart 中绑定(bind),在 onStop 中解除绑定(bind),如示例代码所示。

当我的 Activity 退出时,它会发送一个本地广播。当服务接收到该广播时,它调用 stopForeground()(它是一个前台服务),然后调用 stopSelf()。然后调用它的 onDestroy() 方法。但是,有一个问题。服务的 LocalBinder 实例保留在内存中,因为它被 Android 的 FinalizerReference 引用。许多其他导入类和系统类也保留在内存中。

有谁知道为什么 LocalBinder 引用保存在 FinalizerReference 队列中?这就是导致其他类保留在内存中的原因吗?我曾尝试使 LocalBinder 成为一个单独的类而不是内部类,但这并没有帮助。谢谢。

编辑:当服务不是前台服务时,问题仍然存在。

最佳答案

好吧,我认为这根本不是内存泄漏,而只是 Android 将进程保留在内存中以防应用程序重新启动,如下所述:

https://stackoverflow.com/a/1982992/2340402

关于android - FinalizerReference导致的Service Binder内存泄露,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com