2010-12-29 4 views
0

onSaveInstanceState()onRestoreInstanceState() 메서드는 활동 상태가 약 onPause()이되기 전에 동적 데이터를 저장하기위한 것입니다. 간단한 Activity 버튼을 클릭하면 텍스트가 변경됩니다. 나는 그들의 몸에 아무것도 이러한 방법을 모두 무시 않았다onRestoreInstanceState()가 재정의 된 상태가 변경됨

@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
    } 

난 다시 응용 프로그램에 hidding 및 홈 화면으로 이동을 통해 활동을 복원하고 해요. 그리고 액티비티가 복원되면 버튼의 텍스트가 기본값이 아니므로, 액티비티를 onPause()으로 전달하기 전과 같습니다. 내 onRestoreInstanceState() 메서드가 비어 있으면 어떻게 작동합니까?

더 이상한 무엇이 -이 두 가지 방법이 호출되고 onRestoreInstanceState()도 호출되지 않았 음을 알기 위해 디버깅을 시도했습니다.

답변

0

액티비티 상태가 onPause()로 가기 전에 동적 데이터를 저장하기위한 것입니다.

아닙니다. onSaveInstanceState()에 대한 설명서는 다음과 같습니다.

"이 메서드는 호출 할 때 onStop() 전에 발생하며 onPause() 전후에 발생할지 여부는 보장되지 않습니다."

저는 홈 화면으로 돌아가서 앱으로 돌아가서 활동을 숨기고 복원하고 있습니다.

onSaveInstanceState()이 트리거 될 수도 있고 트리거되지 않을 수도 있습니다. onRestoreInstanceState()을 트리거하지는 않습니다. 이 방법을 테스트하는 더 좋은 방법은 화면 방향을 변경하는 것입니다.

활동이 복원되면 단추의 텍스트가 기본값과 같지 않지만 onPause()로 활동을 전달하기 전과 같습니다.

사용자는 단추를 입력 할 수 없으므로 기본 구현 인 onSaveInstanceState()은 단추를 무시합니다.

+0

데이터 복구를 위해받은 번들을 사용해야하는 경우 onCreate()가 호출되기 때문에 장치 상황에 따라 다른 상황이 발생합니다. 내가 원하는 것은 두 가지 방법이 작동하는 방식을 찾는 것입니다. 그리고 예, 사용자는 버튼으로 입력 할 수 없으며 저장/복원 방법을 확인하기 위해 기본 텍스트를 변경하고 있습니다. – Eugene

+0

@AndroidNoob : onRestoreInstanceState()를 호출하면 onCreate()가 항상 호출됩니다. 따라서 화면 방향을 변경하십시오. "저장/복원 방법을 확인하기 위해 기본 텍스트를 변경하려고합니다"- 그러면 자신의 "상태"를 onSaveInstanceState()에 저장하고 onRestoreInstanceState()에 복원해야합니다. – CommonsWare

+0

해명 해 주셔서 감사합니다. – Eugene