액티비티 생명주기

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()으로 돌아온다) 

 

 

 

예제

https://github.com/chaesoobum/ActivityLifeCycle