인스턴스 상태 저장 및 복원이 쉬워졌습니다!

초보자가 간단한 앱을 만들 때 테스트 중에 화면 회전이 사용자로부터 수집 된 모든 데이터를 재설정한다는 것을 알 수 있습니다. 화면 회전 파괴하고 활동을 재현하고 모든 데이터가 손실 될 수 있습니다 안드로이드의 많은 라이프 사이클 변화 중 하나입니다! 훌륭한 사용자 경험은 아닙니다.

활동 수명 주기에 대한 이러한 변경 사항에 대한 앱을 준비하려면 데이터를 저장하고 복원하기 위해 주 작업에 추가할 수 있는 두 가지 방법이 있습니다:

  1. ()

이 메서드를 사용하면 키/값 쌍을 앱의 외부 상태에 추가할 수 있습니다. 이 메서드를 사용하면 값을 검색하고 원래 수집된 변수로 다시 설정할 수 있습니다.

앱이 이를 사용하도록 준비하려면앱의 상태로 인해 활동이 소멸될 때 보존해야 하는 모든 데이터에 대한 인스턴스 변수를 만드는 것이 중요합니다. 이러한 변수는 모든 메서드 외부에 있으며 클래스의 어느 곳에서나 액세스 할 수 있습니다.

또한 이 데이터를 사용자에게 표시하는 뷰를 식별하고 특성을 사용하여 활동을 복원할 때 데이터가 여기에 계속 표시되도록 지정해야 합니다:

android:freezesText="true"

이 방법은 안드로이드의 이전 버전에서()정지하기 전에 호출하고 최신 버전에 대한()정지 한 후 호출 할 수 있습니다.

 1 @Override
2 protected void onSaveInstanceState(Bundle outState) {
3 super.onSaveInstanceState(outState);
4 outState.putInt("AStringKey", variableData);
5 outState.putString("AStringKey2", variableData2);
6 }

이 방법을 분해 할 수 있습니다:

  1. 1 행의 재정의는 메서드의 기본 선언을 재정의할 것임을 나타냅니다.
  2. 2 줄의 메서드 서명은 액세스 한정자가”보호됨”으로 시작하며,이 메서드는 클래스 자체,패키지 또는 하위 클래스 내에서만 액세스 할 수 있음을 나타냅니다. 이 메서드의 반환 유형은 데이터를 반환하지 않으므로”무효”입니다. 이 메서드가 사용하는 매개 변수는 아웃 스테이트라는 번들 유형 개체입니다.
  3. 우리는이 기본 방법을 재정의하고 있기 때문에,우리는 모든 기본 아웃 스테이트 데이터를 저장하는 슈퍼(라인 세)를 사용해야합니다.
  4. 4 행에서 자신의 데이터를 저장할 수 있습니다. 이 응용 프로그램은 응용 프로그램의 외부 상태에 점 표기법을 사용하여 호출됩니다. 첫 번째 인수는 임의의 문자열이며 두 번째 인수에 저장하는 값에 액세스하기 위한 키(변수 설정과 유사)로 사용됩니다. 여기서는 정수 값을 저장하는 인스턴스 변수를 제공했습니다. 주의 사항 5 행은 문자열 형식의 변수가 아웃 스테이트에 저장되는 것을 제외하고는 매우 유사합니다.이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때 이 메서드를 호출할 때
     1 @Override
    2 protected void onRestoreInstanceState(Bundle savedInstanceState){
    3 super.onRestoreInstanceState(savedInstanceState);
    4 variableData = savedInstanceState.getInt("AStringKey");
    5 variableData2 = savedInstanceState.getString("AStringKey2");
    6 }

    이 방법을 분해 할 수 있습니다:

    1. 1 행의 재정의는 메서드의 기본 선언을 재정의할 것임을 나타냅니다.
    2. 2 행의 메서드 서명은 액세스 한정자”보호됨”으로 시작합니다.이 메서드는 클래스 자체,패키지 또는 하위 클래스 내에서만 액세스 할 수 있음을 나타냅니다. 이 메서드의 반환 유형은 데이터를 반환하지 않으므로”무효”입니다. 이 메서드에서 사용되는 매개 변수는 저장된 상태라는 번들 형식 개체입니다.
    3. 이 기본 메서드를 재정의하기 때문에 3 행에서 슈퍼를 사용하여 저장된 모든 기본 상태 데이터를 복원해야합니다.
    4. 관련 앱 데이터를 인스턴스 변수에 저장한 이후 점 표기법을 사용하여 저장된 상태 가져오기 메서드를 호출하여 아웃스테이트에 저장한 데이터를 다시 변수로 설정하고 데이터를 인수로 저장하는 데 사용되는 문자열 키를 제공합니다.

    이 설명이 이러한 방법과 사용 방법을 더 잘 이해하는 데 도움이되기를 바랍니다. 자세한 내용은 안드로이드에 대한 활동 설명서를 참조하십시오.

    행복한 코딩!