Bru*_*eri 82 android updates sharedpreferences
我已将用户设置存储在我的应用程序的SharedPreferences中.当我通过Google Play商店将应用更新到应用的新版本时,SharedPreferences会发生什么?
更新后SharedPrefernces是否仍然存在或将被删除?
到目前为止,我还没有在网络或Stackoverflow上找到答案(我可能会搜索错误的关键字?).
你能指点一些他们描述这个过程的链接吗?
编辑: 同时我也找到了另一个答案:Update/Uninstall上的SharedPreferences行为
编辑2:
由于我第一次提出这个问题的时间已经过去了,我最近了解到,自从Android 6.0(API 23)以来,也可以使用自动备份功能来保护您的共享首选项,如Google所述.只需allowBackup="true"在AndroidManifest.xml文件中添加即可.
has*_*ian 67
Cristian 在这里说:当用户安装更新时,您的应用程序数据将保留.
但它必须与package name检测作为以前App的更新一样.
警告Android用户的 EboMike 应用更新可能导致旧应用版本中的数据丢失?说:
坦率地说,由于升级而丢失数据是不可接受的.
编辑:
通常,在更新过程中将保留SharedPreferences(以及其他用户数据),但有时,由于某些" 未知 "问题,数据可能会丢失,我猜这是不受您控制的.因此,您可以简单地相信将保留SharedPreferences(请参阅此处).
因此,如果要避免在升级过程中清除用户数据,则必须将主数据保存在外部存储中(这可以是可移动存储介质,例如SD卡或内部,不可移动存储).私有用于您的App.Or至少在升级之前将用户备份数据.然后在第一次运行您的(升级版)应用程序时,检查外部存储中是否有备份文件或没有.
如果您想知道升级应用程序必须/可能发生什么事情?,我没有什么好介绍的this.It是复杂的和相对有Android Security,Application signing,copy protection和其他topics.I意味着,如果你在任何上述领域改变你的应用程序的状态,它会导致不同的结果.
例如,如果你CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON,你的应用程序将被更新但导致所有共享首选项丢失,文件访问是不可能的......
您虽然必须小心条件导致您的新应用程序being considered作为以前的应用程序的更新(请参阅不能更改的事情).
此外,您必须小心您的代码,这可能会导致删除数据库的数据(请参阅使用预加载的SQLite更新应用程序).
但最终,如果要小心,你可以说:
更新过程仅替换apk文件(以及其中的内容,例如drawables,...)并且不会更改数据库,共享偏好以及在运行时生成的任何其他文件(可能在这种情况下,安装了新的App UID等于之前App的UID.
您可以查看这些页面以获取更多详细信息
救命!?更新我们在市场上的应用程序会删除已保存的SharedPreferences.
更新后市场拷贝保护完全打破文件访问
有人可以解释应用程序更新过程吗?
我想当我上次通过Google Play更新我的应用程序时,sharedPreferences不受影响.
我正在使用它们自动登录,更新后它就这样做了.
那是一个月前,我的记忆力会变得模糊,所以听听别人的意见也会更好.
经过4个多小时的调试,我发现我正在通过序列化将模型保存为字符串。可序列化的类具有唯一的ID,其名称为 serialVersionUID,该ID在运行时默认设置,并且该ID由类名,接口和变量名计算得出。我发现我更改了模型类,添加了变量,然后更新了应用程序。由于现在更改了类,因此设置了新的serialVersionUID并因此在更新时,它无法反序列化字符串并创建模型,并且给出了java.io.InvalidClassException
明确设置serialVersionUID以避免此问题
static final long serialVersionUID = 42L;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31715 次 |
| 最近记录: |