繁体   English   中英

为什么Android更新我的应用程序会删除信息?

[英]Why do Android updates of my app erase information?

在我的应用程序中,下面的代码中有一个与FileOutputStream存储在一起的对象列表。 另外,我的应用程序中有与SharedPreferences一起存储的所有设置。 每当我第一次在Google Play商店上更新我的应用程序时(对于不熟悉该过程的人,我都会上载新的APK),所有使用该应用程序的人都将删除所有对象,并且所有设置均设置为默认值。 为什么这样做,如何将对象存储在更新后不会消失的位置?

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();
    }

}

对于常规更新,您的用户不会丢失这些值。

我相信,丢失了存储的SharedPreference和保存的文件数据的每个用户都被迫删除其旧应用程序,以便从Play商店安装新应用程序。 否则,您的某些键或文件格式必须已更改。

签名

您当然可以使用Android的“ 签名应用程序”文档来在Play商店中进行更新,但是可能有问题的用户正在使用使用您单独交付给他们的签名(例如调试模式签名)签名的应用。 这可以解释为什么他们在Play商店进行更新之前被迫卸载,从而删除了所有已保存的信息。

资料格式

另一种选择是,用于SharedPreference值的Keys可能已更改, 或者 ObjectStorage的文件格式或类结构已更改,从而使得无法读取旧值。 对于用户而言,这似乎就像旧值消失了一样。 然后,当用户以新格式保存值时,您的应用将继续为他们正常工作。

总结

必须发生以下情况之一:

  1. 您的用户已删除,然后重新安装。 要么,
  2. 您存储的数据格式在版本之间进行了更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM