有多快SharedPreferences
?有没有办法将它们放在内存中以供阅读?我有少量数据ListView
需要查询才能显示每个单元格,我担心调用闪存会太慢。我不担心写入速度,因为写入很少发生。我正在考虑仅使用 JSON 对象而不是SharedPreferences
. 有什么想法吗?
问问题
13269 次
4 回答
61
有没有办法将它们放在内存中以供阅读?
在第一次引用之后,它们在内存中。第一次检索特定的SharedPreferences
(例如PreferenceManager.getDefaultSharedPreferences()
)时,数据会从磁盘加载并保留。
于 2013-10-02T23:18:13.883 回答
19
我的建议是先测试你的表现,然后开始担心速度。一般来说,你会更喜欢一个优先考虑可维护性和速度的应用程序。当工程师在让应用程序稳定之前开始实现性能时,结果是应用程序运行速度更快但有很多错误。
于 2013-10-03T01:15:43.930 回答
11
根据此链接,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
于 2020-07-08T15:20:11.510 回答
-1
我有少量数据 ListView 必须查询才能显示每个单元格
你不能做一个单例,一个普通的类,然后从那里第二次阅读吗?我会那样做。
于 2013-10-02T23:22:53.793 回答