Android - 存储对ApplicationContext的引用

时间:2010-04-20 08:03:00

标签: java android static reference

我有一个静态的Preferences类,它包含一些应用程序首选项和类似的东西。可以在那里存储对ApplicationContext的引用吗?我需要这个引用,所以我可以在不继承Activity的类中获取缓存文件夹和类似的内容。

1 个答案:

答案 0 :(得分:6)

如果你没有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);   
}

这很难看,但确实有效。