onCreate()
- 액티비티가 처음 생성될 때 호출됨
- UI를 설정하거나, 필요한 리소스를 초기화하는 작업을 수행
- setContentView()를 호출하여 화면 레이아웃을 설정함
- 일반적으로 ViewModel, 데이터 바인딩, 리소스 로딩 등의 초기화 작업을 수행
onStart()
- 액티비티가 사용자에게 보이기 직전에 호출됨
- UI가 화면에 나타나기 시작하지만, 아직 사용자와 상호작용할 수 없음
- 화면이 다시 나타날 때(onRestart() 이후에도) 호출될 수 있음
onResume()
- 액티비티가 사용자와 상호작용할 수 있을 때 호출됨
- 버튼 클릭이나 입력 이벤트를 받을 수 있음
- 포커스를 얻고 실행 중인 상태(Active 상태)가 됨
onPause()
- 액티비티가 포커스를 잃었을 때 호출됨
- 화면 일부가 가려지거나(예: 다이얼로그가 뜰 때) 다른 액티비티로 전환될 때 호출됨
- 애니메이션이나 무거운 작업을 멈추고, 리소스를 해제하는 것이 좋음
- onResume()이 다시 호출될 수도 있음
- 다른액티비티가 start되었을 때도 새로나타난 액티비티의상태에따라 onStop()으로 가지않고 이곳에서 머무를수있음
onStop()
- 액티비티가 완전히 화면에서 사라질 때 호출됨
- 다른 액티비티가 전체 화면을 차지할 때 실행됨
- 사용자가 다시 돌아오면 onRestart() → onStart() → onResume() 순으로 호출됨
onDestroy()
- 액티비티가 완전히 종료되기 직전에 호출됨
- 시스템이 메모리를 회수하거나, 사용자가 finish()를 호출했을 때 실행됨
- 리소스 정리 및 메모리 해제 작업을 수행
:)실제 동작을통해 알아보자
1. 액티비티가 처음 실행될때
2. 메인액티비티에서 세컨드액티비티로 넘어갔을때
3. 세컨드 액티비티에서 뒤로가기를 눌러 메인액티비티로 되돌아갔을때
메인액티비티에서 세컨드액티비티로 넘어갈때 onPause에 머물러있게하는법
세컨드 액티비티를 투명(transparent)한 액티비티로 만들면됨
1. res/values/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.TransparentActivity" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
2. AndroidManifest.xml
<activity
android:name=".SecondActivity"
android:exported="false"
android:theme="@style/Theme.TransparentActivity"/>
세컨드 액티비티가 투명한상태에서 메인액티비티-> 세컨드액티비티
이상태에서 세컨드액티비티를 종료하고 메인액티비티로 돌아왔을때
(onRestart()를 거치지않고 바로 onResume()으로 돌아온다)
예제