티스토리 뷰

startActivityForResult() 메서드를 실행시킬 경우 Activity로 돌아올 때 onResume() 메서드와 onActivityResult() 메서드의  우선순위는?

먼저 Activity의 생명 주기를 확인해보겠습니다.



사진 찍기 이후와 갤러리를 다녀오고 난 다음에 Activity로 돌아와 onActivityResult() 메서드가 실행되는 것을 로그로 찍어 봤는데 다음과 같은 경우가 있었습니다.

Case 1

onPause()
onStop()
————————— (갤러리나 사진을 찍으러 다녀옴)
onActivityResult()
onRestart()
onStart() ← Point View
onResume() ← Point View

Case 2

onPause()
onStop()
————————— (갤러리나 사진을 찍으러 다녀옴)
onRestart()
onActivityResult()
onStart() ← Point View
onResume() ← Point View

Case 3

onPause()
onStop()
onDestroy()
————————— (갤러리나 사진을 찍으러 다녀옴)
onCreate()
onStart() ← Point View
onActivityResult()
onResume() ← Point View

정리

뭔가 일정하지 않습니다. 하지만 정리해보면 아래와 같습니다.

onActivityResult() 메서드는

  1. onStart() 메서드 전·후로 실행 된다.
  2. onResume() 메서드 전에 꼭 실행 된다.

결론

onResume() 메서드는 Activity로 돌아올 경우 꼭 실행이 되는 메서드입니다. startActivityForResult() 메서드를 실행시킬 경우 Activity로 돌아올 때onResume() 메서드와 onActivityResult() 메서드 중 어떤 것이 우선순위가 있는 것인지 확인해보지 않고서는 헷갈리기 쉬운 부분 입니다.

로그를 찍어 확인해 봤으니 이젠 잊지 말아야겠네요. (잊을까봐 여기에 정리해놓습니다… 흑…)

startActivityForResult() 메서드가 먼저 실행되고 onResume() 메서드가 나중 실행된다!


댓글
댓글쓰기 폼
Total
156,201
Today
15
Yesterday
186