2014-03-04 3 views
0

이것은 내 첫 번째 게시물입니다. 나는 그것을 가능한 한 좋은 것으로 만들려고 노력할 것이다. 세로 및 Lanscape 전환시 게임의 상태를 유지하기 위해 Serializable을 사용하는 간단한 게임을 개발 중입니다. 이것은 잘 작동하지만 지금은 메뉴 작업 (SplashScreen.java)에 "Resume game"버튼을 추가하고 싶습니다.직렬화 된 객체가 디스크 또는 메모리에 저장됩니까?

내 첫 번째 질문은; 게임을 닫았다가 다시 시작한 후에도 동일한 allready 직렬화 된 객체를 사용하여 게임을 재개 할 수 있습니까? 다시 말해, finish()에서 저장된 상태가 손실됩니까? MainActivity, SplashScreen (메뉴), Board (객체)

두 번째 질문 : 버튼을 사용하여 메뉴의 마지막 상태를 어떻게 확인할 수 있습니까? 내가있어 내 개체 클래스 Board.java에서

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putSerializable("board", board); 
    outState.putSerializable("moveCounter", moveCounter); 
} 

// When onCreate is called, bring back saved state if any 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    if (savedInstanceState != null) { 
     Board oldState = (Board) savedInstanceState 
       .getSerializable("board"); 
     int oldMoveCounter = savedInstanceState.getInt("moveCounter"); 
     if (oldState != null) { 
      board = oldState; 
      moveCounter = oldMoveCounter; 
     } 
    } 

이 :

public class Board implements Serializable { 
private static final long serialVersionUID = 4416703215631262818L; 
... 
... } 
+2

'SharedPreferences'는 필요한 것입니다. 직렬화 된 객체는 디스크 상에 존재할 수도 있고 존재하지 않을 수도 있지만 (Dalvik VM에서 귀하의 응용 프로그램보다 낮은 레벨에서 발생합니다), 응용 프로그램의 인스턴스간에 상태를 유지하는 데 사용해서는 안됩니다. 그러나 직렬화 된 객체를 자신의 파일에 작성할 수는 있지만'SharedPreference'가 처리하기 때문에 왜 귀찮을까요? – Simon

+0

다른 계획이었습니다. 내 코드의 그 부분을 재활용 할 수없는 것 같습니다. 이것은 나를위한 SharedPreferences를 배울 좋은 기회가 될 것입니다. Simon – Pacman

+0

serializables 또는 parcelables를 사용하는지 여부에 상관없이 감사합니다. 자동 저장되지 않습니다. 단지 바이너리 (1 바이트 배열)로 변환하여이를 재구성 할 수 있다는 것을 의미하며 저장하는 전제 조건입니다. – NameSpace

답변

0

첫째, 성능 지혜가 낫다 내 MainActivity.java에서

나는이있어 Serializable 대신 Parcelable을 사용하십시오. 따라서 엔티티를 만들려면 Parcelable을 사용해보세요. 설명서에 link이 있으며 여기에는 클래스를 만드는 간단한 예제 Parcelable도 나와 있습니다.

둘째, Android에는 몇 가지 지속성 옵션이 있으며 사용 사례에 가장 적합한 옵션을 선택해야합니다. 모두 설명하는 good document이 있습니다.

관련 문제