Activity.finish ()는 Android에서 어떻게 작동합니까?
누군가 Activity
가 finish()
메서드를 호출 할 때 어떤 일이 발생하는지 설명 할 수 있습니까?
즉시 종료됩니까, 아니면 호출 된 기능을 완료합니까?
즉시 종료되거나 호출 된 기능을 완료합니까?
호출 한 메서드가 finish()
완료 될 때까지 실행됩니다. finish()
당신은 안드로이드에 제어를 리턴 할 때까지 작업도 시작되지 않습니다.
같은 모든 라이프 사이클 이벤트 onCreate
, onResume
, onPause
.... onDestroy
"메인 스레드를"- 액티비티의 항상 하나의 스레드에서 호출됩니다.
요컨대이 스레드는 모든 활동 이벤트가 게시되는 큐에 의해 지원됩니다. 이 스레드는 삽입 순서대로 이러한 모든 이벤트를 실행할 수 있습니다.
다음 finish()
과 같은 라이프 사이클 콜백 중 하나에서 호출하는 경우 onCreate()
"완료"메시지가이 큐에 추가되지만 스레드는 현재 실행중인 메서드가 반환 될 때까지 "마침"작업을 자유롭게 선택하고 실행할 수 없습니다. 즉, 스레드가 현재 작업.
ondestroy()
활동이 파괴되기 전에받는 마지막 전화입니다.
이것은 활동이 완료 finish()
중이거나 (누군가가 호출 했거나 시스템이 공간을 절약하기 위해이 활동 인스턴스를 일시적으로 파괴하고 있기 때문에 발생할 수 있습니다 isFinishing()
. 메소드 를 사용하여이 두 시나리오를 구별 할 수 있습니다 .
두 개의 활동 A와 B가있는 경우 흐름은 A> B에서 진행됩니다. B = A는를 호출합니다 finish()
.
그때,
호출 finish()
한 메서드 는 Mark가 언급 한대로 실행됩니다. 그리고 콜백의 흐름은 다음과 같습니다.
onPause()
의activity A
onRestart()
>onStart()
>onResume()
활동 B의- 그런 다음 진정한 차이가 있습니다.
finish()
에서 전화하지 않은 경우activity A
; 단지onStop()
의Activity A
여기 호출됩니다. 이 경우 우리가 전화finish()
한 곳 에서Activity A
; 그래서onStop()
하고onDestroy()
모두가 요구됩니다activity A
.
참고 URL : https://stackoverflow.com/questions/2590947/how-does-activity-finish-work-in-android
'program story' 카테고리의 다른 글
WebDriverException : 알 수없는 오류 : Chrome 브라우저를 시작하는 동안 DevToolsActivePort 파일이 존재하지 않습니다. (0) | 2020.08.15 |
---|---|
google.load로 인해 내 페이지가 비어있는 이유는 무엇입니까? (0) | 2020.08.15 |
Xmlhttprequest 리디렉션 방지 (0) | 2020.08.15 |
Visual Studio의 HintPath 대 ReferencePath (0) | 2020.08.15 |
Angular ui-router에서 $ state.transitionTo ()와 $ state.go ()의 차이점 (0) | 2020.08.15 |