Android 마켓에 내 앱을 넣었습니다. 이제 업데이트하고 싶지만 안드로이드가 내 앱의 메모리를 관리하는 방법을 더 잘 이해하기 전에 특히 나는 이런 식으로 예를 들어, 내부 메모리를 사용 :Android 마켓 업데이트 후 내부 메모리 관리
File f = context.getFileStreamPath(NAME_FILE);
if (f.exists()){
FileInputStream stream = context.openFileInput(NAME_FILE);
ObjectInputStream din = new ObjectInputStream(stream);
myobject = (MyObject) din.readObject();
}else{
FileOutputStream stream = ctx.openFileOutput(NAME_FILE, Context.MODE_PRIVATE);
ObjectOutputStream dout = new ObjectOutputStream(stream);
dout.writeObject(myobject);
dout.flush();
stream.getFD().sync();
}
그리고 좀 직렬화 객체를 저장하기 위해이 파일을 사용했다. 새 버전에서는 이러한 개체의 구조를 변경하여 내 질문에 :
새 업데이트에, 안드로이드는이 파일을 삭제하고 내 응용 프로그램이 객체 (else 절)를 파일에 저장하려고 할 때 생성합니다 새로운 빈 파일? 안드로이드는이 파일을 유지하고 내 응용 프로그램이 파일 (if 절)의 객체를 맞추려고 할 때 충돌이 발생합니다.
Tnx 미리. Framentos
android는 /data/namespace.of.app/에 파일 시스템에 쓰는 모든 파일을 넣습니다. 패키지 이름이나 파일 이름을 변경하지 않으면 f.exists()에서 모두 true로 되돌아갑니다 "이 파일이 존재합니까?"라는 질문을합니다. 그런 다음 객체를 읽고 MyObject 유형으로 다시 직렬화하려고 시도합니다. – ewanm89
[이 페이지에서 "버전 관리"에 대한 섹션 검색 (http://java.sun.com/developer/technicalArticles/Programming/serialization/). 두 가지 요소에 따라 달라집니다. 기존 직렬화 된 클래스와 새 직렬화 된 serialVersionUID가 있어야하며 변경 사항은 "호환 가능"해야합니다. 즉, 문제없이 필드를 제거/추가 할 수 있습니다. 하지만 아마 타입을 바꿀 수는 없습니다. – tiguchi
@ ewanm89 : * "android는 /data/namespace.of.app/"*에 파일 시스템에 작성한 모든 파일을 저장합니다. 반드시 그렇지는 않습니다. 특정 제조업체의 특정 기기에 대한 특정 버전의 Android에 대한 절대 경로를 절대 사용하지 마십시오. – Squonk