清除数据后从共享偏好中获取价值

Posted

技术标签:

【中文标题】清除数据后从共享偏好中获取价值【英文标题】:Getting value from shared preference after clear data 【发布时间】:2018-11-09 11:17:47 【问题描述】:

在安装我的应用程序时,我正在为共享偏好设置一些值。

现在,如果用户已经完成了清除数据,那么这些数据就会消失,并且用户没有再次安装应用程序,这意味着该值将不会被再次设置。

那么,在用户清除数据后,有什么方法可以获取我在安装应用程序时优先存储的值?

【问题讨论】:

如果用户清除数据,那么您将无法从共享偏好中获取该数据。如果数据不存在,您可以在启动器活动的 onResume() 上检查 sharedpreference,然后再次将该数据添加到 sharedpreference 中。 实际上我在安装时存储的值是安装我的应用程序的时间。因此,在清除数据时再次在活动的 onResume() 中添加将给出不同的值。我希望你能解决我的问题。 在安装过程中你不能做任何事情。这是不可能的 @VladyslavMatviienko 确切地说,我正在通过比较应用程序的版本号来升级我的应用程序。如果我的应用程序升级了,那么只有我在设置那个时间值。 您可以将该数据的副本存储在其他 Sharedpreference 中,并在需要时从那里获取。 【参考方案1】:

在 onPause 后,如果不将所有数据保存到服务器中,您将无法恢复数据,但您可以使用同步帐户适配器 Sync adapter 或 Firebase 来存储此数据并在重新安装应用程序后恢复。请记住,同步是异步的,一些数据可能会丢失。在其他情况下,如果您拥有 WRITE_INTERNAL_STORAGE 权限,您可以将数据保存在 SD 卡上,但不能保存在应用文件夹中。

【讨论】:

【参考方案2】:

用户单击清除数据和清除缓存按钮后,您将无法检索保存的数据。因为使用共享首选项存储的所有数据都存储在本地,所以我们没有使用任何服务器。最好的例子是当您已经登录 Facebook 并且您正在为 Facebook 应用程序执行相同操作(清除数据和缓存)时,当您再次打开 Facebook 时,它会要求您再次登录,因为您的所有凭据都存储在本地是否可能使用共享首选项或 SQLite。

【讨论】:

以上是关于清除数据后从共享偏好中获取价值的主要内容,如果未能解决你的问题,请参考以下文章

EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数

Android:从设置外部更改相机权限会导致应用程序共享首选项清除

无效后从内存中清除图像资源

python如何在完成每个循环后从列表中清除项目?

应用程序崩溃时,共享首选项会重置数据。请指导

Android M 奇怪的共享偏好问题