누군가 Activity
이 finish()
전화를 걸 때 무슨 일이 일어나는 지에 대한 설명을 제공 할 수 있습니까?Android에서 Activity.finish()는 어떻게 작동합니까?
즉시 종료 되나, 호출 된 기능을 완료합니까?
누군가 Activity
이 finish()
전화를 걸 때 무슨 일이 일어나는 지에 대한 설명을 제공 할 수 있습니까?Android에서 Activity.finish()는 어떻게 작동합니까?
즉시 종료 되나, 호출 된 기능을 완료합니까?
은 즉시 종료 또는 이 ?
finish()
가 완료 될 때까지 실행됩니다라는 방법을 호출 한 기능을 완료한다. finish()
조작은 Android로 제어를 반환 할 때까지 시작되지 않습니다.
ondestroy()
은 활동이 삭제되기 전에 수신되는 최종 통화입니다. 활동이 마무리되기 때문에이 중 발생할 수
(누군가가 그것을 finish()
라고, 또는 시스템이 일시적으로 활동이 인스턴스를 파괴하기 때문에 공간을 절약 할 수 있습니다. 당신은 isFinishing()
방법이 두 가지 시나리오를 구별 할 수 있습니다.
두 개의 활동 A와 B가있는 경우 흐름이 A> B에서 진행됩니다. B = A는 finish()
으로 전화합니다. 그런 다음
당신이 마크가 언급 한 바와 같이 실행할에서 finish()
라는 방법. 그리고 콜백의 흐름은 다음과 같이 될 것입니다 -
onPause()
onStart()
>onResume()
onRestart()
activity A
의 실제 차이가 제공됩니다. finish()
을 activity A
으로 전화하지 않은 경우; onStop()
이 Activity A
인 경우 여기에서 호출됩니다. 이 경우 우리가 finish()
이라고 부른 곳은 Activity A
입니다. 따라서 onStop()
과 onDestroy()
은 모두 activity A
에 대해 호출됩니다.항상 하나의 스레드에서 호출되어 onCreate
, onResume
, onPause
.... onDestroy
액티비티의 같은 모든 라이프 사이클 이벤트 - "메인 스레드".
간단히 말해서이 스레드는 모든 활동 이벤트가 게시되는 대기열에 의해 백업됩니다. 이 스레드는 이러한 모든 이벤트를 삽입 순서대로 실행할 수 있습니다.
당신이 onCreate()
같은 라이프 사이클 콜백 중 하나 finish()
를 호출하는 경우 ...는 "마무리"메시지가이 큐에 추가됩니다하지만 스레드는 &이 현재 실행 때까지 "마무리"조치 을 실행 선택하는 무료입니다 메서드는 즉 스레드가 현재 작업에서 해제 된 반환합니다.
멋지게 설명 된 +1 – tpk
그런 다음 완료하지 않고 StartAvtivityforResults()에서 호출하는 활동을 완료하는 방법은 무엇입니까? –
@CommonsWare 어떻게하면 onStop이 항상 호출되도록 할 수 있습니까? 내 응용 프로그램에서 OnStop과 onDestroy는 어떤 경우에는 호출되지 않으며 그 경우 자식 작업이 완료 될 때 너무 많은 시간이 걸리고 App이 정지 한 것처럼 보입니다.onStop이 호출되면 모든 것이 정상적으로 작동합니다. 나는 안드로이드 2.3.6과 갤럭시 y에 오전 ... 내 질문을 참조하십시오 http://stackoverflow.com/questions/13928591/a-strange-behavior-of-android-activities-fragments-and-intent plz help !! ! – aProgrammer
@CommonsWare 나는 매우 진실 된. + 1을 테스트했다.하지만 나는 한 가지 질문을하고 싶다. 내 함수에서 첫 번째 문으로 finish()를 작성한 다음 전체 함수를 실행하고 finish()를 호출하는 방법을이 관리 방법이라고 부른다. –