[kotlin] Android Task

이아름·2022년 10월 6일
0

안드로이드

목록 보기
6/13
post-thumbnail

Task 란?

  • 관련된 실행 액티비티들을 순서대로 묶어 관리하는 것

  • 서로 다른 package에 있더라도 하나의 Task 안에 있을 수 있음

Task 구조

  • Task는 stack의 형태로 구성됨
  • stack의 바닥에 있는 activity을 root activity라고 부른다.
  • stack의 맨 위에 있는 activity를 top activity라고 부른다.
  • root activity가 없어지면 task는 완전 종료된다.
  • 홈화면에서 새로운 앱을 실행시키면 새로운 Task를 생성한다.
    최근 실행 앱 목록은 Task의 목록으로 top activity들이 표시됨
    앱 목록에서 원하는 Task를 선택하면 해당 Task가 동작한다.

  • 모든 android 앱은 각각의 Virtual Machine에서 돌아간다.
    => 앱마다 VM이 다르다.

Activity 실행모드

  • standard : 기본 값, task 내에 중복된 activity를 허용한다.
  • singleTop : top activity와 동일한 activity를 실행하면 기존의 top activity를 재사용함
    intent의 flag로 설정 가능
  • singleTask : 위치에 상관없이 activity를 재사용함
  • singleInstance : 중복 허용x & 혼자서 별도의 task를 구성함
  • AndroidManifest.xml에 등록하거나 Intent Flag를 이용해 설정할 수 있음
    -> Manifest : 등록시 항상 동작
    -> Intent Flag : runtime에 설정, 그때 그때 다른 값 지정 가능

SingleTop

  • singleTop일 경우 동일한 activity가 시작되면 해당 activity에서
    onPause -> onResume이 호출된다.

  • 기존 lifecycle에서 처음 호출하는지 다시 호출된 것인지 알 수 없음
    => onNewIntent : 재사용 시 전달되는 Intent를 활용한다.
    onPause -> onNewIntent -> onResume 순으로 호출됨

SingleTask & SingleInstance

SingleTask

  • 하나의 task 내에서 동일한 activity를 호출하면 기존 activity와 새로운 activity 사이의 activity들을 모두 제거한다.
  • 특정 activity로 바로 복귀해야할 경우 유용하다.

SingleInstance

  • task 내에는 오로지 singleInstance로 설정된 activity 하나만 존재
    -> 실행 시 별도의 task를 생성함 (이름은 동일)
profile
반갑습니다

0개의 댓글