gpt4 book ai didi

java - 一个类的类成员被垃圾收集,即使应用程序有对它的引用

转载 作者:行者123 更新时间:2023-11-29 09:30:43 24 4
gpt4 key购买 nike

关于 Android 上的垃圾回收,我发现了一种我没有预料到的行为。

我有一个类扩展名为 App 的应用程序并修改了 list ,以便

<申请 android:name=".App"...

为了方便起见,我之前使用过它能够通过静态方法获取应用程序上下文,但也存储了小而重要的信息,这些信息应该只在整个应用程序被垃圾收集时才被收集。此信息存储在已初始化的单例对象中,引用存储在应用程序类中:

public class App extends Application {

Context mContext;
Info info;

@Override
public void onCreate() {
super.onCreate();
mContext = this;

info = Info.getInstance();

this.setTheme(R.style.MyTheme);
}

public static Context getContext(){
return mContext;
}
}

当 Info 被初始化时,一个简单的成员对象也被初始化:

public class Info {


public Profile profile;

(...)

private Info() {
profile = new Profile();
}

(...)
}

我遇到的问题是,当应用程序暂停并且我运行另一个内存密集型应用程序(以强制进行垃圾收集)时,当我返回该应用程序时,我在尝试访问配置文件 var 时收到 NullPointerException

Info.getInstance().profile

应用程序持有对“信息”单例的引用以及单例持有对“配置文件”的引用这一事实不应该阻止它被垃圾收集吗?

感谢任何帮助。谢谢!

最佳答案

进一步了解 android 中的应用程序生命周期。如果您启动另一个需要内存的应用程序,其他应用程序将在后台被杀死。

然后 OnCreate 应该再次运行,所以它不能是垃圾收集器,因为 Info 会从头开始重新创建。

Activity life cycle

关于java - 一个类的类成员被垃圾收集,即使应用程序有对它的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632689/

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