我应该把 getDefaultSharedPreferences 放在应用程序中 class

Should I put getDefaultSharedPreferences in application class

据我所知,getDefaultSharedPreferences 正在将所有首选项文件加载到内存中。 在我的应用程序中,我有许多 classes,我在其中传递上下文并使用 getDefaultSharedPreferences。在执行过程中,这些 classes 加载了很多次,结果 getDefaultSharedPreferences 被称为 allot。 我的问题是:我是否应该在 Application class 中只加载一次首选项,然后在所有 classes 中从那里访问首选项?这可行吗?这会提高我的应用程序的速度吗?有人这样做过吗?

像这样:

private static MyApplication singleton;

public static MyApplication getInstance() {
    return singleton;
}

@Override
public void onCreate() {
    super.onCreate();
    myPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}

public SharedPreferences getPreferences(){
    return myPreferences;
}

SharedPreferences 在第一次加载后缓存,因此磁盘访问加载数据需要时间,但只有一个 time.Once 它们在第一次引用后位于内存中。第一次检索特定 SharedPreferences(例如 PreferenceManager.getDefaultSharedPreferences())时,数据将从磁盘加载并保存。