내 안드로이드 게임용 데이터를 모두 savedInstanceState 번들에 맞추기 위해 많은 노력을 기울였습니다. 많은 Parcelable 객체를 포함하여 많은 데이터가 있습니다. 이렇게하면 앱이 일시 중지되거나 방향이 바뀌면 Activity가 재생성되어 데이터가 손실되지 않습니다.번들을 SharedPreferences에 저장
그러나 최근에 나는 savedInstanceState 번들이 장기간 저장에 적합하지 않음을 발견했습니다. 그래서 저는 기존의 save 메소드를 장기적인 해결책으로 적용하여 게임 상태를 항상 복원 할 수있는 방법을 찾고 있습니다.
나는이 개 솔루션 지금까지 들어 본 적이 :
1) 방향 변경에 대한 savedInstanceState 번들을 사용하여, 또한 응용 프로그램이 완전히 종료해야하는 경우에 대한 SharedPrefs을 통합합니다.
기본적으로 똑같은 작업을 수행하기 위해 완전히 다른 두 가지 방법을 사용하기 때문에 이것은 비생산적인 것처럼 보입니다. 또한, 내 savedInstanceState 번들은 Parcelable 객체를 사용하기 때문에 각 객체에 SharedPrefs에 기록 할 수있는 또 다른 메소드를 제공해야합니다. 본질적으로 중복되고 관리하기 어려운 코드가 많이 있습니다.
2) savedInstanceState 번들을 직렬화하여 파일에 직접 작성하십시오.
나는이 문제에 대해 공개적으로 답변을하고 있지만 실제로 어떻게해야하는지에 대해서는 알지 못합니다. 그러나 안드로이드에서의 직렬화가 "코믹하게/쓸모 없게 느리다"는 말을 들었을 때 더 나은 해결책이있을 것이라는 희망을 계속 갖고 있습니다.
누군가 내게 해결책을 제공 할 수 있다면 매우 감사 할 것입니다.
직렬화 클래스를 찾기 위해 직렬화하려면 찾기가 매우 어렵지 않습니다. 나는 그것을 사용하는 동안 극심한 지연을 발견하지 못했습니다. – mango
찾을 수있는 유일한 정보는 Serializable을 구현해야한다는 것을 알려주지 만 번들은이 인터페이스를 구현하지 않습니다. – Dan
나는 https://github.com/iamironz/binaryprefs 라이브러리를 권장한다. 구현을 통해 표준 자바와 같은 데이터를 저장할 수있다. 지속 가능한 인터페이스 (jdk의 외부화 가능 인터페이스) –