我有一个静态 Preferences 类,其中包含一些应用程序首选项和类似的内容。可以在那里存储对 ApplicationContext 的引用吗?我需要该引用,以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容。
你使用的是对的ApplicationContext
那里,因为如果你不这样做它可能会导致严重的内存泄漏 http://developer.android.com/intl/de/resources/articles/avoiding-memory-leaks.html.
但是,您遇到的问题是static
变量可能无法保留其值。由于 Android 处理应用程序的方式,您的应用程序可能会被终止然后重新启动(通常是由于用户切换到其他应用程序),这样您的应用程序就会被终止。static
变量将变为 null 并且设置它的代码将不会运行。看一下这个问题以获得更详细的答案 https://stackoverflow.com/questions/1944369/android-static-object-lifecycle-application-act-crazy.
也许可以解决这个问题,但要测试所有可能导致变量最终出现的可能性null
将非常耗时且容易出错。因此,在我的静态首选项类中,我制作了任何需要Context
把它当作一个论据。例如:
static int getSomeIntegerPreference(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(PREFERENCE_SOME_INTEGER, 0);
}
它很丑,但很有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)