Activity는 특정 상태(앱이 시작되고 종료될 때까지의 모든 상태)에 따라 호출되는 CallBack 함수들이 있다.
이 특정 상태에 대한 CallBack 함수에서 특정 소스를 입력한다고 생각하면 된다.
예를들어 앱이 시작될때(특정 상태)는 시작에 관련된 소스(특정 소스)를 입력한다!
Activity의 생명주기
- onCreate() : 최초 실행 CallBack 함수.View 구성요소 초기화
setContentView()를 통한 레이아웃 정의 - onStart() : onCreate() 함수 바로 뒤 실행.
Activity가 시작단계에 돌입, 최종 준비 단계 - onResume() : Activtiy와 사용자의 상호작용 돌입 직전 단계.
앱의 핵심 기능을 구현. - onPause() : Activity가 ‘일시중지’상태에 전환될때 호출되는 함수.
이후 onStop(), onRestart()가 실행될 수 있음.
사용자의 데이터 저장, 네트워크 호출, DB 트랜잭션을 실행하면 안됨.
항상 onResume() 뒤에 옴. 앱에서 ‘취소’ , ‘최근’ 버튼을 누를때 실행. - onStop() : 사용자에게 더이상 보여지지 않을때, 곧 종료될때, 새로운 Activity가 실행될때 호출되는 함수.
다시 시작되면 onReStart()를, 곧 완전히 종료되면 onDestroy()를 호출함. - onRestart() : onStop()에서 다시 앱이 실행되려할때 호출.
중지된 시간부터의 상태를 복원하며 이 뒤에 항상 onStart()가 실행됨. - onDestroy() : Activity가 완전히 제거되기 전에 호출되는 함수.
Activity의 모든 리소스를 해제.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var intent = Intent(this, Lifecycle_activity::class.java)
startActivity(intent)
}
class Lifecycle_activity : AppCompatActivity() {
val thisName = "Lifecycle_activity"
// step_1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_lifecycle)
Log.d(thisName,"onCreate()")
}
// step_2
override fun onStart() {
super.onStart()
Log.d(thisName,"onStart()")
}
// step_3
override fun onResume() {
super.onResume()
Log.d(thisName,"onResume()")
}
// step_4
override fun onPause() {
super.onPause()
Log.d(thisName,"onPause()")
}
// step_5
override fun onStop() {
super.onStop()
Log.d(thisName,"onStop()")
}
// step_5
override fun onRestart() {
super.onRestart()
Log.d(thisName,"onRestart()")
}
// step_6
override fun onDestroy() {
super.onDestroy()
Log.d(thisName,"onDestroy()")
}
}
앱 최초 실행 했을 때 Log
D/Lifecycle_activity: onCreate()
D/Lifecycle_activity: onStart()
D/Lifecycle_activity: onResume()
앱 종료했을 때
D/Lifecycle_activity: onPause()
D/Lifecycle_activity: onStop()
D/Lifecycle_activity: onDestroy()
'최근' 버튼 눌렀을 때
D/Lifecycle_activity: onPause()
D/Lifecycle_activity: onStop()
앱 재실행 했을 때
D/Lifecycle_activity: onRestart()
D/Lifecycle_activity: onStart()
D/Lifecycle_activity: onResume()
참고 : https://developer.android.com/guide/components/activities/intro-activities