생명주기
앱에서 나가고, 앱으로 다시 돌아갈때
Activity 인스턴스는 수명주기 안에서 서로 다른 상태를 통해 전환된다!
Activity클래스는 활동이 상태변화를 알아차릴 수 있는 여러가지 콜백을 제공한다.
-사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할때 비정상적으로 앱이 종료
-앱에서 나갔다가 다시 돌아왔을때, 사용자의 진행상태 저장
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() 부터 다시 실행