2015.11.29 22:36


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() 메서드가 나중 실행된다!


신고


Posted by injunech

티스토리 툴바