清除数据后从共享偏好中获取价值
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:如何在组合框上自动完成查询后从数据存储中清除“查询”参数