在我的应用程序中,下面的代码中有一个与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();
    }

}

===============>>#1 票数:1

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

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

签名

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

资料格式

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

总结

必须发生以下情况之一:

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

  ask by AggieDev translate from so

未解决问题?本站智能推荐: