读取SharedPreferences的速度

时间:2013-10-02 23:10:57

标签: android performance sharedpreferences

SharedPreferences的速度有多快?有没有办法把它们放在记忆中供阅读?我有一些ListView必须查询以显示每个单元格的数据,我担心对闪存的调用会太慢。我并不担心写入速度,因为写入很少发生。我正在考虑使用JSON对象来保留数据而不是SharedPreferences。有什么想法吗?

4 个答案:

答案 0 :(得分:48)

  

有没有办法把它们放在记忆中供阅读?

在第一次参考之后,它们在记忆中。第一次检索特定SharedPreferences(例如PreferenceManager.getDefaultSharedPreferences())时,数据会从磁盘加载并保留。

答案 1 :(得分:14)

我的建议是首先测试你的表现,然后开始担心速度。一般来说,您会对使用可维护性和速度优先的应用感到满意。当工程师在应用程序稳定之前开始实现性能时,结果是应用程序运行得更快但有很多错误。

答案 2 :(得分:1)

根据this链接,getSharedPreferences并不那么繁重,因为它仅在您第一次调用getSharedPreferences时才打开文件:

// There are 1000 String values in preferences

SharedPreferences first = context.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
// call time = 4 milliseconds

SharedPreferences second = context.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
// call time = 0 milliseconds

SharedPreferences third = context.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
// call time = 0 milliseconds

但是第一次使用get方法会花费一些时间:

first.getString("key", null)
// call time = 147 milliseconds

first.getString("key", null)
// call time = 0 milliseconds

second.getString("key", null)
// call time = 0 milliseconds

third.getString("key", null)
// call time = 0 milliseconds 

答案 3 :(得分:-1)

  

我有一些ListView必须查询的数据   显示每个单元格

难道你不能制作一个Singleton,一个普通的类,并从第二次那里读取它?我会这样做。