Be Developer

[Android] 액티비티(Activity)와 백 스택(Back Stack) 본문

Android

[Android] 액티비티(Activity)와 백 스택(Back Stack)

yujin_dev 2019. 4. 29. 10:24
반응형

액티비티(Activity)

  • 애플리케이션 구성 요소
  • 화면 제공
  • 하나의 애플리케이션은 여러 개의 액티비티로 구성되고 그 중 하나의 액티비티가 "주요" 액티비티로 지정됨
  • "주요" 액티비티는 사용자가 애플리케이션을 처음 실행할 때 표시됨

백 스택(Back Stack)

  • 액티비티들은 스택(백 스택)에 저장됨

작업에서 새 액티비티가 백 스택에 항목을 추가하는 방법

  • 액티비티가 시작되면 스택에 push, 액티비티가 소멸되면 스택에서 pop (후입선출, LIFO)

두 개의 작업

  • 작업(Task) = 하나의 잘 짜여진 단위, 액티비티 컬렌션
  • 작업의 모든 액티비티는 백그라운드에 있는 동안 중단되지만, 해당 작업에 대한 백 스택은 그대로 유지 (포커스만 잃는 것)
  • 작업이 포그라운드로 돌아오면 사용자가 이전에 하던 일 계속 가능 (스택 맨 위에 있는 액티비티가 재개됨)
  • 여러 개의 작업을 백그라운드에 한꺼번에 대기시킬 수 있음. 하지만, 사용자가 수많은 백그라운드 작업을 동시에 실행하면 시스템이 메모리를 복원하기 위해 백그라운드 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 상태가 손실됨 = 시스템이 이 액티비티를 재개하는 것이 아닌 재생성함 (∴ 작업 내용 보존을 위해 액티비티의 onSaveInstanceState() 콜백 메서드 구현)

하나의 액티비티가 여러 번 인스턴스화 가능

  • 백 스택의 액티비티는 재정렬 X
  • 애플리케이션에서 사용자에게 하나 이상의 액티비티로부터 특정 액티비티를 시작하도록 허용하는 경우, 해당 액티비티의 새 인스턴스가 생성되어 스택으로 push (해당 액티비티의 기존 인스턴스를 맨 위로 가져오는 것 X) = 여러 번 인스턴스화 가능
  • 액티비티의 상태 변경은 액티비티의 생명 주기 콜백 메서드를 통해 알려짐
반응형
Comments