2012-02-23 3 views
4

내가 겪은 주제에 대한 다른 모든 게시물과 반대되는 문제가있는 것으로 보입니다. 다른 사람들은 onDestroy()가 항상 호출되지는 않지만 찾을 수는 있지만 은 항상이며 바로 알 수 있습니다.의도 버튼을 사용하여 항상 onDestroy()를 호출합니다.

나는 그것이 다음과 같이 호출되는지 여부를 확인하고 있습니다 :

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.d(TAG, "onDestroy"); 
} 

이 로그 코드를 다시 클릭하거나 의도로 집 활동을 호출 내 액션 바의 버튼을 사용하거나 직후 시작됩니다.

나는 주위를 둘러 보았다했지만 모두가 라이프 사이클은 다음과 같이해야한다고 말했습니다 : http://developer.android.com/images/activity_lifecycle.png

이 동작은 하나의 응용 프로그램에 제한되지 않는다; 일부 예제 코드를 다운로드하고 위의 디버깅 코드를 추가하여 동일한 동작을 찾으려고했습니다. 그것은 또한 단일 안드로이드 버전에 국한되지 않습니다; 필자는 에뮬레이터에서 2.1 및 2.3을 시도했으며 실제 장치에서는 4.0.2를 시도했습니다.

내가 잘못하고 있을지도 모르는 아이디어가 있습니까?

답변

8

>다시 키가 실제로 활동에 대한 finish() 방법을 유발 누르면, 그것은 paused-> stopped-로 활동 원인은 예상대로이 동작이 작동하므로 기술적으로

을 파괴했다.

+0

기타 [게시물] (http://stackoverflow.com/questions/4778754/kill-activity-on-back-button)는 다른 사람들이 onPause() 내부에서 완료 코드를 호출하여 코드를 확실히 확인하는 것에 이의를 제기하는 것 같습니다. 그들의 활동은 파괴된다. 어쨌든 onDestroyed()는 홈 액티비티가 호출 되더라도 호출됩니다.이 내용은 라이프 사이클 다이어그램에서 "다른 액티비티가 포어 그라운드로 들어와 있습니다"라고 생각합니다. http://developer.android.com/images/activity_lifecycle.png – dhewett

+1

아니, 이것은 활동 거짓말주기가 실제로 작동하는 방식입니다. ** Home ** 키를 누르면 onDestroy가 호출되지 않을 수 있습니다 (전화가 메모리가 부족한 경우에 따라 다름). 그러나 onStop이 수행합니다. 그리고 ** Back ** 키를 누르면 onDestroy가 호출됩니다. 난 당신이 활동과 로그 메시지를 관찰 할 수있는 각각의 행사에 대한 테스트 응용 프로그램을 작성해야한다고 생각합니다. – waqaslam

+0

당신의 도움을 받아서 Waqas를 해결해 주셔서 감사합니다. 당신이 정말로 맞습니다. 안드로이드 설명서의 말씨는 메모리가 부족하지만 Back 키를 눌렀을 때만 onDestroyed()를 호출해야한다고 생각하게했습니다. [This] (http://qwapp.blogspot.com/2011/01/android-app-life-cycle-and-home-and.html) 블로그 게시물에 설명되어 있습니다. – dhewett

관련 문제