2011-01-04 5 views
11

디버거에서 앱을 실행하면 기본 스레드와 3 개의 바인더 스레드가 생깁니다.Activity.finish()가 호출되었지만 액티비티는 메모리에 계속로드됩니다.

버튼을 클릭하면 Activity.finish ()로 전화가 걸립니다. UI가 닫히고 홈 화면으로 돌아갈 때 활동이 종료되는 것처럼 보입니다.

그러나 디버거에서는 여전히 "(running)"으로 주 스레드와 3 개의 바인더 스레드를 표시합니다.

왜 이런 일이 발생했는지 저는 당황 스럽습니다. 내 앱이 앱을 종료 한 후 다시 실행하면 Activity.onResume()으로 전화가 걸립니다. (

  • 들의 OnDestroy()
  • onPause()
  • onResume()
  • onSaveInstanceState :

    저는 현재 활동에서 이러한 메소드를 오버라이드 (override),하지만 각각의 해당 슈퍼 함수를 ​​호출)

이 문제에 관한 도움이나 조언을 보내 주시면 감사하겠습니다.

+0

활동주기에 대해 읽어보십시오. 그리고 이것을 이해하십시오 http://www.androidjavadoc.com/1.0_r1_src/android/app/doc-files/activity_lifecycle.png – fiction

+0

Hi Fiction, 저는 여러 번 문서를 읽었으며 게시 한 이미지는 제가 이해할 수있는 곳이었습니다. 에서. 나는 Activity.finish()를 호출 한 후 다시 시작하기보다는 다시 시작한다는 것을 혼란스러워했다. – twig

답변

22

앱이 메인 ​​메모리를 떠날 때, OS가 제어하지 않습니다. ... Activity.finish 자세히 보면

콜이 활동은 을 수행하고 폐쇄해야 할 때. ActivityResult는 onActivityResult()를 통해 사용자를 시작한 사람에게 다시 전파됩니다.

메모리에 대해서는 아무 것도 말하지 않습니다. Activity.onResume 호출과 관련하여 라이프 사이클에 대해 기대하는 바를 정확히 따라야합니다. onResume은 이력서 이후에 호출되는 것이 아니라 onCreate 이후에 앱이 처음 시작될 때도 기억됩니다.

동안 당신은 내가 당신은 매우 중요한 무언가 말을 계속하는 this article about exit buttons을 읽을 제안 요청하지 정확히

[Activity.finish] 백 버튼을 눌렀을 정확히 동일합니다.

+3

앤드류 (Andrew)에게 감사드립니다. 그것은 약간의 마음을 여는 사람이었습니다. 나는 Activity.finish()가 클로저를 위해 대기열에 놓기보다는 닫는 것을 항상 생각 해왔다. 이 경우 재 작업을해야합니다. – twig