N S*_*rma 12 android android-preferences android-sharedpreferences
我读过这篇文章https://medium.com/@ianhlake/hidden-gems-of-android-o-7def63136629.这就是那里写的:
SharedPreferences已经死了.累积的SharedPreferences.
将SharedPreferences继续在Android O中工作吗?我们是否需要实现自己的机制,通过实现将数据存储在键值对中PreferenceDataStore
任何人都可以帮助实现新的SharedPreferences使用方法 PreferenceDataStore和开发自己实现的用例是什么?目前的方法有任何缺点吗?
你应该放弃以封面来判断这本书的坏习惯,而不是仅仅从引人注目的章节标题中得出结论,只需完全阅读上述帖子即可.
在Android Oreo中甚至不赞成共享首选项,Ian Lake提到的是一项改进,它允许您的应用程序保持与现在相同的简单键/值对API,但另外能够提供您自己的数据存储实现所述数据(即Firebase,远程服务器等).如果您不需要,那么您可以直接使用共享首选项,因为您没有对代码进行任何更改,并且这样的用例没有真正改变.
小智 4
我想不出它仅适用于使用 PreferenceDataStore 而不是完全适用于 SharedPreferences 的情况,但我确实认为如果您想一起使用它们,这会很有帮助。
SharedPreferences 为您提供了一项出色的服务,即当您的应用程序更新时,数据仍然保留在首选项中,但使用 PreferenceDataStore,您还可以以与 SharedPreferences 中相同的格式存储数据。现在假设您想使用相同的首选项界面,但您希望将这些值存储在云中而不是设备中,因为设备可能会崩溃。
PreferenceDataStore 可以帮助您的是,它为您提供了在任何位置存储数据并编写自己的实现的灵活性。它并不意味着完全取代 SharedPreferences,但如果您愿意,您可以这样做。
例如,您可以在共享首选项中使用应用程序的访问令牌,以及云或本地数据库或云或文件系统中的所有其他数据(如果需要),并且您可以使用 PreferenceDataStore 接口,写下您自己的实现,然后用它。
即使在 Google PreferenceDataStore https://developer.android.com/reference/android/preference/PreferenceDataStore.html中的开发人员文档的链接中, 它也是这样写的
在大多数情况下,您希望使用 SharedPreferences,因为它会自动备份并迁移到新设备。但是,如果您的应用程序将其首选项存储在本地数据库、云中或者它们是特定于设备的(例如“开发人员设置”),则为首选项提供自定义数据存储可能会很有用。当您想要使用首选项 UI 但根本不应该存储数据时,它也可能很有用,因为它们仅在每个会话中有效。
所以你可以看到,即使google也不希望你一直使用PreferenceDataStore,只是当你需要使用相同的Preferences风格存储键值对时,但你想实现自己的数据存储时将为您提供比当前 SharedPreferences 更大的灵活性。
例如,如果您想要获取 SharedPreferences,然后将 SharedPreferences 数据放在云服务器上,该怎么办?您希望将其保存在设备上,同时也将其备份到云端,在这种情况下,PreferenceDataStore 可以帮助您。