Mr.*_*dia 10 performance android sharedpreferences
哪个是Shared Preferences
android存储数据的最佳选择,如果我想读取数据并再次保存一些更改.数据可以是用户的配置文件,json响应或任何对象.当我存储大量数据时,我正在搜索Reda/Write数据的其他耗时较少的选项.目前我的应用程序需要x毫秒才能从活动A转到活动B.我可以减少这个时间吗?
Mat*_*ych 20
如果不深入了解您的用例,很难向您推荐任何内容.
SharedPreferences
可能是一个不错的选择.SharedPreferences
并查看AccountManager
.OkHttp
例如,对此有很好的支持.说到加载时间 - SharedPreferences
一般来说非常快,但它实际上取决于你如何使用它.如果你在其中存储大的JSON结构,那么完全读取它只是为了找到一些基于id的特定对象 - 显然它需要比使用真实数据库更多的时间.
在所有的解决方案,我建议记(AccountManager
,SharedPreferences
和SQLite /域)可以在一个应用程序彼此很好地工作.只需确保为给定问题选择合适的工具.
小智 11
Jetpack DataStore是一种经过改进的全新数据存储解决方案,旨在取代 SharedPreferences。DataStore 基于 Kotlin 协程和 Flow 构建,提供两种不同的实现:
\n数据以异步、一致和事务方式存储,克服了 SharedPreferences 的大部分缺点。
\n如果您当前使用 SharedPreferences 来存储数据,请考虑迁移到 DataStore。
\n数据存储类型
\nDataStore提供了两种不同的实现:
\n首选项 DataStore \xe2\x80\x93 使用键存储和访问数据。此实现不需要预定义模式,并且不提供类型安全。
\n原始数据存储 \xe2\x80\x93 将数据存储为自定义数据类型的实例。此实现要求您使用协议缓冲区定义模式,但它提供类型安全。
\n共享首选项与数据存储
\nSharedPreference 会阻塞由 apply() 调度的挂起的 fsync() 调用上的 UI 线程,这通常会成为 ANR 的来源。
\nSharedPreferences 将解析错误作为运行时异常抛出。
\n在这两种实现中,DataStore 将首选项保存在文件中,并在 Dispatchers.IO 线程上执行所有数据操作。
\n参考:DataStore \xe2\x80\x93 Jetpack 替代 SharedPreference
\n我找不到更好的方法来保存用户数据。SharedPreferences 正是为此目的而创建的。SharedPreferences 不应阻止您的活动加载。因此,可能还有其他因素会降低您的表现。