Android - 수명 주기 사용 사례

2022. 4. 27. 17:07IT/안드로이드

반응형

수명 주기 사용 사례 

Activity는, 코드상에서 수동으로 finish() 메서드를 호출하거나,

사용자가 앱을 강종하는 경우에도 완전히 종료 될 수 있다. 

Android System은 앱이 오랫동안 화면에 표시되지 않으면 자체적으로 종료할 수도 있다.

Android는 배터리를 보존하고, 앱의 리소스를 다른 앱에서 사용할 수 있도록 이 작업을 실행한다.

이전 단계에서 Activity가 소멸되었으므로, (onDestroy) 앱으로 돌아가면 안드로이드는 새 활동을 시작하고, onCreate, onStart, onResume을 호출한다. 이전 활동의 로그가 유지되지 않은것이다. 

그렇다면 , 홈 화면으로 돌아갔을때 앱이 백그라운드에 있을때는 어떤 순서로 될까? (뒤로 버튼을 눌러 종료하지 않는경우)

App을 켰다가,  홈 버튼을 눌러 홈 화면으로 이동해보자. (다른 어플을 열었다가 이 어플로 들어가도 동일함.)

onPause 와 onStop 만 뜬다. 

그리고 다시 앱으로 돌아가면, 

onRestart, onStart, onResume 순서로 불러온다. 

아래의 Created 단계 말고, 위의 Lifecycle만 도는 것이다. 

 

* onRestart()

onRestart() 메서드는, onCreate()와 매우 유사하다. 둘 다 활동이 표시되기 전에 호출되는데,

onCreate()는 맨 ~처음에만 호출이되고(최초 open), onRestart()는 그 후에 호출이 된다. 

이건 활동이 처음으로 시작되지 않은 경우에만 호출하려는 코드를 배치하는 위치이다. 

onResume()이 호출되면 , App 은 사용자 Focus를 확보한다. 즉, 사용자가 App과 상호작용을 할 수 있는것이다.

App 이 완전히 화면에 표시되고, 사용자 포커스를 보유하는 수명 주기 부분을 " 대화형 " 수명 주기라고 한다.

 

App이 백그라운드로 이동하면, onPause() 후에 포커스가 상실되고, onStop() 후에 더 이상 앱이 표시되지 않는다. 

포커스와 가시성의 차이가 중요한 이유는, 앱 화면이 표시는 되지만, 사용자 Focus가 없을 수 있기 때문이다. 

구체적으로 예시를 들자면, 어플의 "공유" 버튼을 눌러보자. 

이런식으로 공유 목록이 뜨고 뒤의 어플은 잠시 일시 정지가 되는것이다. 

공유 버튼을 누르면 , onPause 로그만 출력이 되고, 다시 앱 화면을 눌러 화면으로 돌아가면 onResume 로그가 뜬다.

따라서,

onResume()은 App 의 활동에 포커스가 있을때 호출이되고, onPause()는 포커스가 없을때 호출이 된다. !

정도로 정리하면 되겠다. 

 

 

 

 

728x90
반응형

'IT > 안드로이드' 카테고리의 다른 글

onSaveInstanceState() 가 동작을 안한다?  (3) 2022.04.28
Android - 데이터 손실시 onSaveInstanceState() 사용  (6) 2022.04.27
Android - 수명 주기  (6) 2022.04.27
Android - RecyclerView  (6) 2022.04.20
Kotlin - List, MutableList  (6) 2022.04.20