我看到了一种我没想到的关于 Android 上的垃圾收集的行为。
我有一个扩展名为 App 的应用程序并修改清单的类,以便
<应用程序 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
应用程序持有对“信息”单例的引用以及单例持有对“配置文件”的引用这一事实不应该阻止它被垃圾收集吗?
任何帮助表示赞赏。谢谢!