Android 10中的LocalService和LocalBinder泄漏内存

问题描述

我有一个LocalService实现,完全如此处建议那样,以便通过绑定器提供对服务方法的访问。

https://developer.android.com/guide/components/bound-services#Binder

public class LocalService extends Service {
    // Binder given to clients
    private final IBinder binder = new LocalBinder();

    /**
     * Class used for the client Binder.  Because we kNow this service always
     * runs in the same process as its clients,we don't need to deal with IPC.
     */
    public class LocalBinder extends Binder {
        LocalService getService() {
            // Return this instance of LocalService so clients can call public methods
            return LocalService.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }
}

从Android 10开始,此实现似乎会泄漏内存。当服务未绑定(并销毁)时,不会LocalServiceLocalBinder对象进行垃圾回收。下一个绑定将创建一个新的服务对象。根据内存分析器,LocalBinder对象在Cleaner中是所指对象。知道如何解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...