我有一个静态的Preferences类,其中包含一些应用程序首选项和类似的东西。可以在其中存储对ApplicationContext的引用吗?我需要该引用,以便可以在不继承Activity的类中获取缓存文件夹和类似内容。
最佳答案
如果不使用it can cause significant memory leaks,那么您就可以在那里使用ApplicationContext
了。
但是,您遇到的问题是static
变量可能无法保留其值。由于Android处理应用程序的方式,您的应用程序可能会被杀死,然后重新启动(通常是由于用户切换到其他应用程序),以这种方式,您的static
变量将变为null,而对其进行设置的代码将不会不能运行。 Have a look at this question for a more detailed answer。
可能可以解决此问题,但是测试所有可能导致您的变量以null
结尾的可能性将非常耗时且容易出错。因此,在我的静态首选项类中,我已经使需要Context
的任何方法都将其作为参数。例如:
static int getSomeIntegerPreference(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(PREFERENCE_SOME_INTEGER, 0);
}
很难看,但是可以用。