据我所知,getDefaultSharedPreferences
正在将所有首选项文件加载到内存中。
在我的应用程序中,我有许多类,我传递上下文并使用getDefaultSharedPreferences
。在执行期间,这些类加载了很多次,然后结果getDefaultSharedPreferences
被称为分配。
我的问题是:我应该只在Application类中加载一次首选项,然后从所有类中访问首选项吗?这可行吗?这会增加我的应用程序的速度吗?有人这样做过吗?
这样的事情:
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;
}
答案 0 :(得分:1)
SharedPreferences
缓存,因此磁盘访问加载数据需要花费一些时间,但只有一次。在第一次引用后,它们就在内存中。第一次检索特定SharedPreferences
(例如PreferenceManager.getDefaultSharedPreferences()
)时,数据会从磁盘加载并保留。