2014-11-06 2 views
0

내 Android 앱에서 앱이 백그라운드로 이동할 때 onSaveInstanceState()가 항상 호출됩니다. OS가 앱을 종료 할 때 onSaveInstanceState()가 호출된다는 사실을 이해했습니다. 이것을 고려하여 나는 약간의 논리를 설계했다. 하지만, 구현하는 동안이 이상한 행동을 발견했습니다. onSaveInstanceState()를 구별하는 방법은 OS가 응용 프로그램을 종료 한 후 호출되거나 정상적인 일시 중지시 호출되는 것입니다. 문서에 따르면onSauseInstanceState가 onPause 이후에 호출하는 이유

답변

1

: 그것은 미래에 다시 시간이 올 때 그것의 상태를 복원 할 수 있도록

이 방법은 활동 전에 호출되어 사망 할 수 수 있습니다.

즉,이 방법은 활동이 OS에 의해 종료되기 직전에 호출되지 않습니다. 액티비티가 백그라운드로 들어가서 나중에 복원 될 가능성이있을 때 호출됩니다. 액티비티가 백그라운드로 들어가기 직전에 상태를 저장하면 시스템이 애플리케이션을 죽이는 방법을보다 유연하게 할 수 있습니다. 일단 애플리케이션이 종료되었다고 결정하면 즉시 그렇게 할 수 있습니다 (즉, 호출에 대해 걱정할 필요가 없습니다. 그렇게하기 전에 응용 프로그램의 onSaveInstanceState() 메서드).

+0

이론이 괜찮아 보입니다. 그러나 실용적인 onSaveInstanceState()는 모든 일시 정지시 호출됩니다. – Ammar

+0

바로 그 이유는 내 대답에서 말하려고하는 이유입니다. :) 시스템이 실제로 앱을 죽이기 직전에 호출되지 않습니다. 'onSaveInstanceState()'는 시스템이 나중에 앱을 죽이는 경우 앱이 백그라운드로 들어갈 때 즉시 호출됩니다. –

+0

따라서'onSaveInstanceState()'에서 우리는 OS가 정상적인 일시 정지인지 앱을 죽일지 알 수 없습니까? – Ammar

0

onSavedInstanceState() 활동이 일시 정지되기 전에 호출 된 후 발생 여부에 대한 보장이 없습니다가 (이 '외설 t 가시). 활동이 의도적으로 파괴 된 경우 (예 : 사용자가 백 스페이스를 누름) onSavedInstanceState()가 호출되지 않습니다. onSavedInstanceState()의 주요 역할은보기를 보존하는 것입니다.

짧은 대답 : 아니오, 할 수 없습니다.

자세한 내용은 this을 참조하십시오. 그것은 단편에도 사용할 수 있습니다.

관련 문제