SharedPreferences
的速度有多快?有没有办法把它们放在记忆中供阅读?我有一些ListView
必须查询以显示每个单元格的数据,我担心对闪存的调用会太慢。我并不担心写入速度,因为写入很少发生。我正在考虑使用JSON对象来保留数据而不是SharedPreferences
。有什么想法吗?
答案 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,一个普通的类,并从第二次那里读取它?我会这样做。