문자열의 arraylists를 포함하는 영구 직렬화 가능 객체를 저장하는 Android 응용 프로그램이 있습니다. 이 개체는 내부 메모리에 저장되며 앱이 시작될 때마다 복구됩니다. 그것은 잘 작동합니다 .... 문제는 내가 시장에서 애플 리케이션의 newwer 버전을 시작하고 사용자가 최신 버전을 다운로드하고 설치하면 저장된 객체가 제대로 복구되지 않고 객체의 4 개 arraylists가 비어있게 복구된다는 것입니다. . 그런 다음 사용자가 이전 버전의 앱에 저장된 데이터를 잃어 버렸습니다. 이것은 내가 해결해야하는 거대한 문제입니다.내 응용 프로그램의 새로운 시장 버전에서 저장된 (영구적 인) 직렬화 가능 객체를 올바르게 읽을 수 없습니다.
이 내 직렬화 객체입니다
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();}
}
이 코드는 잘 작동 기억을 경우의 버전 앱이 업데이트되지 않았습니다.
무엇이 잘못 되었나요? 이 데이터를 내 앱의 다른 안드로이드 마켓 버전간에 지속적으로 유지하려면 어떻게해야합니까?
감사
저는이 문제에 대해 전문가가 아니지만 특정 상황에서 직렬화가 일치하지 않을 수 있다고 생각합니다. JSON 또는 XML과 같은 안정적인 것을 사용하면 안정적인 결과를 얻을 수 있습니다. 이것이 현재의 문제에 도움이되지 않는다는 점에 유감입니다. – Krylez