我应该把 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()
)时,数据将从磁盘加载并保存。
据我所知,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()
)时,数据将从磁盘加载并保存。