我有一个 android 应用程序,它存储包含 4 个字符串数组列表的持久可序列化对象。该对象存储在内存中,每次应用启动时都会恢复。它工作正常....问题是当我在市场上推出新版本的应用程序并且用户下载并安装更新版本时,存储的对象没有正确恢复,对象的四个数组列表恢复为空. 然后,用户丢失了他们以前版本的应用程序存储数据。这是一个我必须解决的大问题。
这是我的可序列化对象:
public class SaveState implements Serializable{
public ArrayList <String> fNumbers = new ArrayList<String>();
public ArrayList <String> fNames = new ArrayList<String>();
public ArrayList <String> favNumbers = new ArrayList<String>();
public ArrayList <String> favNames= new ArrayList<String>();
public static SaveState instance=new SaveState();
}
这些是我用来存储和恢复这个持久对象的方法:
public static void saveData(Context context){
ObjectOutput out;
try {
File directory = context.getDir(STORE_DIRECTORY, Context.MODE_PRIVATE); //primero comprobamos si existe el directorio, y si no, lo creamos.
File outFile = new File(directory, "appSaveState.data");
System.out.println("########## SAVING INTO: "+outFile.getAbsolutePath());
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(SaveState.instance);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
public static void loadData(Context context){
ObjectInput in;
try {
File directory = context.getDir(STORE_DIRECTORY, Context.MODE_PRIVATE); //primero comprobamos si existe el directorio, y si no, lo creamos.
File inFile = new File(directory, "appSaveState.data");
System.out.println("########## LOADING FROM: "+inFile.getAbsolutePath());
in = new ObjectInputStream(new FileInputStream(inFile)); //intentamos cargar el fichero
SaveState.instance=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
}
请记住,如果应用程序的版本未更新,则此代码可以正常工作。
怎么了?我应该怎么做才能使这些数据在我的应用程序的不同 android 市场版本之间持久存在?
谢谢