为什么我的应用程序的Android更新会删除信息?
在我的应用程序中,我有一个对象列表,这些对象与下面代码中的FileOutputStream一起存储。此外,我的应用程序中的任何设置都存储在SharedReferences中。每当我第一次在Google Play store上更新我的应用程序时(对于那些不熟悉该过程的人,我会上传新的APK),所有使用该应用程序的人的所有对象都会被删除,所有设置都设置为默认值。为什么它会这样做?我如何将对象存储在更新后不会消失的地方为什么我的应用程序的Android更新会删除信息?,android,storage,Android,Storage,在我的应用程序中,我有一个对象列表,这些对象与下面代码中的FileOutputStream一起存储。此外,我的应用程序中的任何设置都存储在SharedReferences中。每当我第一次在Google Play store上更新我的应用程序时(对于那些不熟悉该过程的人,我会上传新的APK),所有使用该应用程序的人的所有对象都会被删除,所有设置都设置为默认值。为什么它会这样做?我如何将对象存储在更新后不会消失的地方 public ObjectStorage readListFromFile() {
public ObjectStorage readListFromFile()
{
ObjectStorage temp = null;
String filename = "storefileobj";
FileInputStream fis;
try {
fis = getActivity().openFileInput(filename);
ObjectInputStream is = new ObjectInputStream(fis);
temp = (ObjectStorage) is.readObject();
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return temp;
}
public void updateStorage()
{
String filename = "storefileobj";
FileOutputStream fos;
try {
fos = getActivity().openFileOutput(filename, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(mainObjectList);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
对于正常更新,用户不会丢失这些值 我相信,您的每个用户如果丢失了存储的
SharedReference
和保存的文件数据,都会被迫删除其旧应用程序,以便从Play Store安装新应用程序。否则,某些密钥或文件格式必须已更改
签名:
为了在Play Store进行更新,您当然使用了Android的文档,但可能有问题的用户使用的是您单独交付给他们的带有不同签名(如调试模式签名)的应用程序。这可以解释为什么他们在Play Store更新之前被迫卸载,从而删除所有保存的信息
数据格式:
另一种选择是,用于共享参考
值的键
可能已更改,或者对象存储
的文件格式或类结构已更改,从而无法读取旧值。在用户看来,这就像旧值消失了一样。然后,当用户以新格式保存值时,您的应用程序将继续为其正常工作
摘要:
必须发生以下情况之一:
有一件事我知道用户不需要重新安装。所以我猜这意味着数据格式一定已经改变了?因为在存储数据时,我没有触及代码。