<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Calculator"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity에는 수명이 존재한다. 왜 존재할까 생각해본다면 한정된 자원을 효율적으로 쓰려면 안쓰는 activity의 자원을 반환해야하기 때문일 것이다.
activity가 생성되고 파괴될때까지 아래의 흐름으로 진행된다.
출처는 여기에
onCreate(): activity에서 가장먼저 실행되는 부분. 여기에서 view를 구성하고 그때 사용되는 함수가 setContentView()이다. 여기에서 대부분의 initialize가 이뤄져야 한다. onCreate 상태에서는 사용자가 뷰를 볼 수 없다. 그리고 onCreate가 끝나면 다음콜백은 항상 onStart()이다.
onStart(): onCreate가 종료되면 activity는 시작됨으로 바뀌고 activity가 사용자에게 보여진다. 그러나 사용자의 입력을 받을 수는 없다. 뷰만 보여지는 상태
onResume(): 사용자와 activity가 상호작용하기 직전 상태. 이 시점에서는 해당 activity가 activity스택(activity를 스택으로 관리하는군!) 맨 위에 존재하고, 드디어 사용자와 상호작용이 가능해지는 상태에 돌입한다. 이 콜백뒤에는 항상 onPause()가 온다.
onPause(): activity가 포커스를 잃을때 호출되는 상태. 예를들어 사용자가 뒤로가기를 누른다던지, 다른 activity로 넘어간다던지 등의 활동이 수행될때 이전 사용자가 머물렀던 activity는 onPause 상태가된다. 공식문서에서는 사용자가 UI업데이트를 기다리고있어도 onPause상태가되고 이 때 UI를 업데이트 할 수 있다고 하는데.. 예를들어 미디어플레이어 재생등이라고 한다. 솔직히 명확하게 이해되지는 않는다. 어쨋든, 이 상태에서 갈 수 있는 상태는 2가지인데 onResume으로 돌아가던지, 아니면 onStop으로 가는것이다.
onStop(): activity에서 완전히 벗어난 상태로 사용자에게 activity가 표시되지않을때 발생한다. activity가 제거중이거나, 새 activity가 시작중이거나, 기존 activity가 reStart() 상태일때 발생할 수 있다. 그래서 사용자가 activity와 상호작용을 다시시작하게될경우 onRestart()로 넘어가고, 그렇지 않을경우 onDestroy()로 넘어가게된다.
onRestart(): onStop 상태의 activity가 다시 활동을 시작하려고할때(이걸 어떻게 분간하지?) 이 콜백을 호출한다. 그래서 이 콜백뒤에는 항상 onStart()가 오게된다.
onDestroy(): activity가 제거되기 전 이 콜백을 호출한다. 해당 activity의 마지막 호출이고 일반적으로는 activity가 제거될때 혹은 해당 프로세스가 종료될때 수행된다. 모든 리소스를 해제한다.