반응형
자세한 내용은 공식 설명을 확인하시고,
여기에서는 간단하게. 어떨때 어떤 함수가 호출되는지 알아보겠습니다.
우선 Activity 를 하나 만들었습니다.
package com.example.test01
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.test01.databinding.ActivityLifeBinding
class LifeActivity : AppCompatActivity() {
val tag = "LifeActivity"
lateinit var binding: ActivityLifeBinding
override fun onCreate(savedInstanceState: Bundle?) {
Log.d(tag, "onCreate()")
super.onCreate(savedInstanceState)
binding = ActivityLifeBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.lifeFinishButton.setOnClickListener {
finish()
}
}
override fun onStart() {
Log.d(tag, "onStart()")
super.onStart()
}
override fun onResume() {
Log.d(tag, "onResume()")
super.onResume()
}
override fun onPause() {
Log.d(tag, "onPause()")
super.onPause()
}
override fun onStop() {
Log.d(tag, "onStop()")
super.onStop()
}
override fun onDestroy() {
Log.d(tag, "onDestroy()")
super.onDestroy()
}
}
그리고 이 Activity 가 실행되었을 때 실행되는 함수는 순서대로.
onCreate()
onStart()
onResume()
다른 앱을 실행하기 위해, 현재 앱을 최소화(=백그라운드 작업으로 전환) 했을 때 실행되는 함수도 아래 순서대로.
onPause()
onStop()
그리고, 백그라운드에 있던 이 앱을 띄우면, 아래 함수들이 순서대로 실행됩니다.
onStart()
onResume()
Finish 버튼을 눌러서 이 Activity를 종료하면,
onPause()
onStop()
onDestroy()
이렇게 실행되는것만 잘 기억해주세요.
예를들어, 카메라나 무거운 CPU/GPU 작업이 진행중인 앱은 onPause() 에서 잠깐 멈추고,
onResume() 에서 다시 실행하도록 하면, 리소스를 효율적으로 관리할 수 있을 겁니다.
이런것을 무시하고 개발을 한다면, 배터리 많이 잡아먹는 앱 1위를 하실 수 있겠죠.
여기까지는 꼭 알아야 하는 부분이고요.
시간되시고 더 알고 싶다면 계속해서 읽어주세요.
아래부터는 조금 더 자세히 알아보겠습니다.
위에서 onStart(), onResume() 이 항상 같이 실행되는데, 차이점을 알아보겠습니다.
onStart():
- 액티비티가 사용자에게 보여지기 직전에 호출됩니다.
- 액티비티가 생성되고 onCreate()가 호출된 이후에 onStart()가 호출됩니다.
- 액티비티가 화면에 표시되기 전에 필요한 초기화 작업을 수행할 수 있습니다.
- onStart() 이후에 액티비티가 화면에 표시되고 사용자와 상호작용할 준비가 완료됩니다.
onResume():
- 액티비티가 사용자와 상호작용할 수 있는 상태가 될 때 호출됩니다.
- onStart() 이후에 onResume()이 호출되며, 화면이 완전히 보이고 사용자와의 상호작용이 가능한 상태입니다.
- onResume()에서는 사용자 입력을 처리하거나, 백그라운드 상태로부터 복구하는 등 액티비티의 동작을 계속 진행할 수 있습니다.
- 액티비티가 포그라운드로 올라오고 사용자와 상호작용을 시작해야 하는 경우 이 단계에서 작업을 수행해야 합니다.
요약하면,
onStart()은 액티비티가 사용자에게 보여지기 시작하는 단계이며 초기화 작업에 사용됩니다.
onResume()은 액티비티가 사용자와 상호작용할 수 있는 상태로 완전히 전환된 단계이며, 사용자 입력을 처리하거나 백그라운드 상태로부터 복구하는 작업에 사용됩니다.
다음은 onPause() 와 onStop() 입니다.
onPause():
- 액티비티가 포그라운드에서 백그라운드로 전환될 때 호출됩니다.
- 예를 들어, 다른 액티비티가 포그라운드로 나타나거나, 현재 액티비티가 다이얼로그나 팝업 창과 같은 요소로 인해 일시적으로 가려지는 상태일 때 호출됩니다.
- onPause()가 호출되면 액티비티는 여전히 부분적으로 보일 수 있지만, 사용자와의 상호작용이 불가능한 상태입니다.
- onPause()에서는 사용자와의 상호작용을 중지하고 액티비티의 상태를 저장하는 등의 작업을 수행해야 합니다.
onStop():
- 액티비티가 더 이상 사용자에게 표시되지 않고 화면에서 완전히 가려진 상태일 때 호출됩니다.
- 다른 액티비티가 포그라운드로 올라오거나 액티비티가 백그라운드로 이동하는 경우에 호출됩니다.
- onStop() 이후에 액티비티는 사용자에게 보이지 않으며, 일반적으로 시스템 리소스를 해제하는 등의 종료 작업을 수행합니다.
- 다시 액티비티가 포그라운드로 올라오면 onRestart()를 거쳐서 onStart()가 호출됩니다.
요약하면,
onPause()는 액티비티가 포그라운드에서 백그라운드로 전환되는 단계이며, 사용자와의 상호작용을 중지하고 상태를 저장하는 등의 작업에 사용됩니다.
onStop()은 액티비티가 더 이상 사용자에게 표시되지 않고 완전히 가려지는 단계이며, 리소스를 해제하거나 종료 작업을 수행하는데 사용됩니다.
728x90
반응형
'Android' 카테고리의 다른 글
[Kotlin] Android Java 와 Kotlin 몇가지 문법 비교 (0) | 2023.07.24 |
---|---|
[Kotlin] class static 변수 사용하기 companion object (0) | 2023.07.24 |
[Kotlin] 새로운 화면(Activity) 추가하고 데이터 주고받기 (0) | 2023.07.23 |
[Kotlin] findViewById 대신에 View binding (0) | 2023.07.22 |
[Kotlin] 코틀린 기본 문법 5 (배열 응용) (0) | 2023.07.20 |
댓글