2011-03-08 7 views

답변

2

docs, onDestroy은 이유에 관계없이 활동이 삭제되기 직전에 호출해야합니다. finish가 요청 된 경우 isFinishing이 true를 반환합니다. 따라서 이것이 틀리면 시스템을 완료해야한다고 가정 할 수 있습니다.

그러나, 문서로도

주 말 : 데이터를 저장하기위한 장소로 호출되는이 방법 에 포함되지 않습니다!

일반적으로 활동이 제대로 종료되지 않을 수도 있습니다. 작업 킬러가 수명주기를 엉망으로 만드는 것과 같은 것들.

제대로 저장하려면 또는 onSaveInstanceState을 사용하십시오.

+0

이 문서 (http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29)를 참조하십시오. finish()를 호출했거나 다른 사람이 완료를 요청했기 때문에이 활동이 완료 과정에 있는지 확인합니다. onPause()에서 자주 사용되어 활동이 일시 중지되었거나 완전히 완료되었는지 여부를 확인합니다. OS가 활동을 죽이는 경우 isFinishing()도 마찬가지입니다. 내가 맞습니까? – Kai

+1

OS를 죽이는 것이 사실이 아니 겠지만 실제로는 직접 테스트하지는 않았습니다. 왜 OS가 그것을 죽이고 있는지 알아야합니까? –

2

수 없습니다.

당신의 활동이 나머지 앱없이 진행될 수 있습니다.이 경우 onDestroy가 호출 될 수 있습니다. 그러나 유닉스에서 kill -9처럼 전체 앱이 한 번에 죽을 수도 있습니다. 현재 앱에서 코드를 실행할 수 없으며 즉시 경고없이 경고 메시지가 표시됩니다.

제대로 처리하려면 모든 중요한 정보를 onPause의 디스크에 저장하고 필요할 경우 나중에 onCreate에서 검색 할 준비가되도록 응용 프로그램을 디자인해야합니다.

+1

안드로이드는 마치 개인 활동이 아닌 프로세스를 죽이는 것처럼 보입니다. http://stackoverflow.com/questions/5227071/understanding-of-isfinishing에서 토론을 참조하십시오. – Kai

+0

"유일한"것이 아닙니다. 귀하의 코드가 안드로이드 만의 죽이는 과정 (app)에 의존한다면, 그것은 잘못된 것입니다. 귀하의 코드가 안드로이드 만 활동을 죽이는 것에 의존한다면, 그것은 틀린 것입니다. 둘 중 하나를 처리하십시오. –

관련 문제