[안드로이드] Activity

:fire: Activity

:sparkles: Manifest에 Activity 선언하기

<manifest ... >
    <application ... >
        <activity android:name=".ExampleActivity" />
            ...
    </application ... >
    ...
</manifest >


:sparkles: Activity 라이프 사이클

activity_lifecycle (1)

:sparkles: Activity 라이프 사이클의 콜백 메서드

  1. onCreate()
    • 각 액티비티의 필수 구현 요소이다.
    • 액티비티가 생성될 때 처음으로 호출되는 메서드이다.
    • onCreate() 메서드 내에서는 액티비티의 전체 수명주기 동안 한 번만 발생해야 하는
      뷰 생성, 리스트에 데이터 바인딩, 클래스 변수의 인스턴스화 등의 시작 로직을 수행한다.
  2. onStart()
    • onStart()가 호출되면 액티비티는 사용자에게 표시된다.
    • 이 때 앱은 액티비티를 포그라운드에 보내 사용자와 상호작용할 수 있도록 준비한다.
    • onStart() 메서드 내에서는 앱이 UI를 관리하는 코드를 초기화한다.
  3. onResume()
    • onResume()이 호출되면 액티비티는 사용자와 상호작용할 수 있다.
    • 어떤 이벤트가 발생하여 액티비티에서 포커스가 떠나기 전까지 액티비티는 이 상태에 머무른다.
    • onResume() 메서드 내에서는 액티비티가 포그라운드에서 사용자에게 보여지는 동안 실행해야 하는
      모든 기능을 활성화할 수 있다.
  4. onPause()
    • onPause()이 호출되면 액티비티는 더 이상 포그라운드에 있지 않은 상태이다.
    • onPause() 메서드 내에서는 시스템 리소스, 센서 핸들(ex. GPS) 또는 배터리 수명에 영향을 미칠 수 있는
      모든 리소스를 해제할 수 있다.
    • 사용자가 멀티윈도우 모드일 경우, 일시중지된 액티비티가 여전히 보여지는 상태일 수 있으므로
      UI 관련 리소스 및 작업을 완전히 해제하거나 조정할 때에는 onPause() 대신 onStop()을 사용하는 것이 좋다.
    • onPause() 메서드는 아주 잠깐 실행되므로 데이터 저장, 네트워크 호출, 데이터베이스 트랜잭션 등을
      실행해서는 안되며 이러한 부하가 큰 종료 작업은 onStop() 내에서 실행해야 한다.
  5. onStop()
    • onStop() 메서드는 액티비티의 실행이 완료되어 종료될 시점에 호출된다.
    • onStop() 메서드가 호출된 이후, 시스템은 메모리 관리를 위해 해당 액티비티를 소멸시킬 수 있다.
    • onStop() 메서드 내에서는 앱이 사용자에게 보여지지 않는 동안 필요하지 않은
      애니메이션, 세밀한 위치 업데이트 등의 리소스를 해제하거나 조정한다.
    • 또한 데이터 저장 등의 CPU를 비교적 많이 소모하는 종료 작업을 실행해야 한다.
  6. onDestroy()
    • onDestroy() 메서드는 액티비티가 수신하는 마지막 수명주기 콜백으로, 액티비티가 소멸되기 전에 호출된다.
    • onDestroy() 메서드 내에서는 이전의 콜백에서 해제되지 않은 모든 리소스를 해제해야 한다.

:sparkles: Activity의 Tasks와 Back Stack

:memo: Reference