기타/Android

[AndroidStudio] 액티비티 생명주기 ( Activity Lifecycle )

yujindonut 2021. 11. 30. 23:36
728x90

생명주기

앱에서 나가고, 앱으로 다시 돌아갈때 

Activity 인스턴스는 수명주기 안에서 서로 다른 상태를 통해 전환된다!

 

Activity클래스는 활동이 상태변화를 알아차릴 수 있는 여러가지 콜백을 제공한다. 

-사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할때 비정상적으로 앱이 종료

-앱에서 나갔다가 다시 돌아왔을때, 사용자의 진행상태 저장

 

 

출처: https://developer.android.com/guide/components/activities/activity-lifecycle 

onCreate()

: 화면이 만들어짐 / 액티비티가 생성될때 실행

onStart()

: 화면에 나타나진 상태 / 화면에 보여지기 시작함

onResume()

: 현재 실행 중 + 화면에 나타남 

onPause()

: 화면이 가려짐 / 액티비티 화면의 일부가 다른 액티비티에 가려짐 

: 액티비티가 foreground에 있지 않을 때 호출된다 - 일시중지(Paused상태)

onStop()

: 화면이 없어짐 / 다른 액티비티의 실행으로 완전히 가려짐

: 메소드 실행 후 액티비티는 중지됨(stopped)상태

onDestroy() 

: 앱 종료됨

: 액티비티가 소멸되기 전(종료 또는 화면 회전) 호출


액티비티 생성

1. onCreate() : 생성된 화면 구성 요소를 메모리에 로드 - xml 등등

2. onStart(), onResume() : 화면의 구성요소를 나타내고 사용자의 실행, 상호작용 (Resumed상태)

 

액티비티 화면에서 제거

 

1. onPause(), onStop() : 뒤로가기, finish()를 실행할 때 동시에 실행

2. onDestroy() : 최종적으로 액티비티가 메모리에서 제거

 -화면에서 보이지 않게 되는 순간 onPause

 -완전히 보이지 않게되면 onStop() 

 -마지막으로 onDestroy()호출

 

액티비티를 종료하지 않고 다른 액티비티 실행 ( 백그라운드 대기 상태 )

 

1. onPause(), onStop() : 현재 액티비티를 종료하지 않고 새로운 액티비티가 만들어졌을때 (Stopped상태)

2. onRestart() , onStart(), onResume() : 메서드가 연속적으로 실행되고 Resumed상태로 변경

 

액티비티를 종료하지 않거나, 모두 가려지지 않을 때 다른 액티비티 실행

1. onPause() : 완전히 사라진 것은 아님 (Paused 상태) 

2. onResume() : onStart()를 거치지 않고 바로 onResume()실행 (Resumed상태) - onStop(화면이 없어짐)되지 않았음

 

강제종료되고 다시 앱 실행

강제종료 된 후 다시 실행하면 onCreate() 부터 다시 실행

728x90