文字列の4つの配列リストを含む永続的なシリアル化可能なオブジェクトを格納する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 マーケット バージョン間でこのデータを永続化するにはどうすればよいですか?
ありがとう