Oncreate()
시스템이 활동을 생성할때 실행되는 것으로, 필수적으로 구현을 해야함
전체 생명주기 동안 한번만 발생해야하는 기본 어플리케이션 시작로직을 실행함
Oncreate() 메스더에 관한 예시로는 사용자 인터페이스 선언, 멤버 변수 정의, 일부 UI구성, 등의 활동에 관한 기본 설정을 보여준다.
OnStart()
활동이 시작됨 상태에 들어가게되면 시스템은 OnStart()을 호출합니다.
호출됨으로써 활동이 사용자에게 표시되고 앱은 활동을 포그라운드에 보내 상호작용할 수 있도록 준비.
빠르게 완료되고 활동은 여기에 머물지 않는 특징 → 콜백이 완료되면 활동이 재개됨 상태에 들어가고 OnResume메서드를 호출
OnResume()
활동이 재개되는 상태에 들어가게되면 포그라운드에 표시되고 시스템이 OnResume()콜백을 호출.
즉 화면에 계속 보이는 동안에는 OnResume()이 실행되고 사용자에게 보이는 동안 실행해야하는 모든 기능을 활성할 수 있음
방해하는 이벤트가 발생하면 활동은 일시중지 → OnPause()콜백 호출
OnPause()
사용자가 활동을 떠나는 것을 나타내는 첫번째 신호로 이 메서드를 호출함.
활동이 소멸되는 것은 아니고 포그라운드에 있지 않게 되었다는것을 나타냄다.
OnPause()메서드를 사용하여 액티비티가 일시중지되어 다시 시작할 작업을 일시중지하거나 조정한다.
일시중지도니 호라동은 멀티 윈도우 모드에서 여전히 완전히 보이는 상태일수 있으므로 UI 관련 리소스와 작업을 해제하거나 조정할때는 OnStop()을 사용하는것을 더욱 추천함
OnStop()
활동이 사용자에게 더 이상 표시되지 않으면 중단됨 상태에 들어가고 시스템은 OnStop()콜백을 호출
OnStop()메서드에는 앱이 사용자에게 보이지 않는 동안 앱이 필요하지 않은 리소스를 해제하거나 조정해야 한다.
CPU를 많이 소모하는 종료 작업을 실행하여아한다.
활동은 정지됨 상태에서 다시 시작되어 상호작용하거나 실행을 종료하고 사라짐
활동이 다시 시작한다 → OnRestart() 호출
액티비티가 실행을 종료 → OnDestroy() 호출
OnDestroy()
활동이 소멸되기 전에 호출된다.
두가지의 경우로 콜백을 호출한다
- 사용자가 활동을 완전히 닫거나 finish()가 호출되어 활동이 종료
- 구성 변경 ( 기기회전 or 멀티윈도우)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우
예제로 통한 이해
앱을 실행
oncreate()로 액티비티가 최초로 생성될때 생성된 화면 구성요소를 메모리에 로드한다
onStart()로 화면에 보여지기 시작하면서
onResume() 로 화면 구성요소를 나타내고 사용자와 상호작용을 시작한다.
앱 실행중 화면 이탈
onPause()로 화면에서 보이지 않는 과정에서 화면의 상태를 임시저장하고
onStop()로 다른 액티비티로 전체가 가려질때 화면의 기능을 중지시킨다.
다시 접속
onRestart()로 사용자가 액티비티를 다시시작하며
onStart(), onResume()으로 화면에 보여지고 실행이 된다.
액티비티 종료
순차적으로onPause() → onStop() → onDestroy()로진행되면서
최종적으로 액티비티가 메모리에서 제거가 된다.
화면 회전시
세로로 되어있던 액티비티가 onPause() → onStop() → onDestroy()
가로로 된 액티비티가 onCreate() → onStart() → onResume()을 호출을 하게 됩니다.
회전할때 액티비티가 새로 시작이 되므로 데이터가 없어지므로 데이터를 보존을 해야한다.
intent로 화면전환시
intent로 화면전환시
- 코드
package com.gyroh.2nd_week import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import com.gyroh.rising_2nd_week.databinding.ActivityMain2Binding class MainActivity2 : AppCompatActivity() { val binding bylazy{ActivityMain2Binding.inflate(layoutInflater)} override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) binding.textViewSecond.text=intent.getStringExtra("data") } }
package com.gyroh.2nd_week
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.gyroh.rising_2nd_week.databinding.ActivityMain2Binding
class MainActivity2 : AppCompatActivity() {
val binding bylazy{ActivityMain2Binding.inflate(layoutInflater)}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.textViewSecond.text=intent.getStringExtra("data")
}
}
화면 전환시 위의 같은 개념으로 액티비티를 이탈하였기 때문에 메인액티비티는 onStop()까지 순차적으로 진행, 새로운 액티비티는 onCreate→ OnStart() → OnResume()순차적으로 실행
다시 메인화면으로 돌아오고자 할때 위의 개념을 포함한 onRestart()를 통해 다시 onResume()까지 진행된다.
'Android & Kotlin > Android' 카테고리의 다른 글
viewpager2 이미지 자동 스크롤 (recyclerview활용) (2) | 2022.12.28 |
---|---|
[코틀린] 안드로이드 sharedpreferences 개념 및 활용 예제 (0) | 2022.12.03 |
Android Palette Component 정리 4. Helpers, Google, Legacy (0) | 2022.11.22 |
Android Palette Component 정리 4. Containers (0) | 2022.11.22 |
Android Palette Component 정리 3. Layouts (0) | 2022.11.22 |
댓글