View

안드로이드 Task(간단 포스트)

제롱구리 2024. 2. 26. 16:48
728x90

오늘 알아볼것!

금일 알아 볼 것은 Task에 대한 것이다.
원래 Intent에 대해서 알아볼 때 포스트하려고 했는데 조금 빠르게 포스트하게 되었다.

Task란? 무엇인가?

Task는 어플리케이션에서 실행되는 Activity를 보관하고 관리는 Stack 형태의 연속된 Activity로 이루어진 것을 말한다.
즉 간단히 말해서 Activity를 순서대로 쌓아 올린 탑 같은 걔념이다.

특징

  • 선입후출(FILO)의 형태로 나중에 쌓인 액티비티일수록 가장 먼저 사용된다.
  • 서로 다른 어플리케이션 간의 이동에도 Task를 이용해 사용자 경험를 유지시켜 준다.
  • 최조적재 액티비티는 Root Activity라고 하며, 어플리케이션 런처로부터 시작된다.
  • 마지막으로 적재되는 Activity는 Top Activity라고 하며 현재 화면에 활성화되어 있는 액티비티를 말한다.
  • Task 내에는 서로 다른 어플리케이션의 액티비티들이 포함될 수 있어 어플리케이션에 경계없이 하나의 어플리케이션인 것처럼 보이게 해준다.
  • Task의 Stack내에 존재하는 액티비티들은 모두 묶여서 background와 foreground로 함께 이동한다.
  • Flag를 사용하여 Task내 Activity의 흐름을 제어할 수 있다.

안드로이드 시스템은 보통 자동으로 태스크를 관리해준다. 하지만 LanuchMode라는 것을 통해서 관리 방식을 설정할 수 있다.
그리고 이 LaunchMode는 AndroidMainfest.xml이나 intent의 flag를 통해서 설정할 수 있다.


LaunchMode

Launchmode에는 총 4가지가 존재한다. standard, singleTop, singleTask, singleInstance가 존재하며, 크게 2가지로 분류할 수 있다.
standard와 singleTop은 액티비티가 여러번 인스턴스화 될 수 있고, 태스크에 어떤 곳에도 존재할 수 있다.
singleTask와 singleInstance는 단일 인스턴스를 유지하면서 항상 태스크의 루트에 있다.


간단히 각각의 모든에 대해서 설명하겟다 자세한건.. 나중에 다시 Intent를 다룰 때..


standard(기본 설정)

  • 기본적으로 설정되어 있는 모드
  • 시스템이 항상 대상 작업에 새 액티비티 인스턴스를 생성하고 Intent를 해당 인스턴스로 라우티한다.
  • singletop*
  • 액티비티 인스턴스가 이미 대상 작업의 맨 위에 존재하는 경우 시스템은 새 액티비티 인스턴스를 생성하는 대신 onNewIntent() 메서를 호출하여 intent를 해당 인스턴스로 라우팅한다.
  • singleTask*
  • 시스템이 새 작업의 루트에 액티비티를 생성하고 인텐트를 해당 액티비티로 라우팅한다.
  • 만약에 액티비티 인스턴스가 이미 존재할 경우 새 인스턴스를 생성하는 대신 onNewIntent() 메서를 호출하여 intent를 기존 인스턴스로 라우팅한다.
  • singleInstance*
  • singleTask와 동일하게 새로운 태스크를 생성한다. 대신 singleTask와 다르게 해당 Task에서 다른 액티비티를 허용하지 않는다.(즉 다른 액티비티 호출 불가)

IntentFlag

intent에 Flag를 설정해서 Task 관리 방식을 설정할 수 있다. (만약에 매니페스트와 동시에 설정시 Flag가 더 우선순위가 높다.)

FLAG_ACTIVITY_NEW_TASK

  • 새로운 태스크를 생성해서 저장한다.(singleTask와 동일)
  • FLAG_ACTIVITY_MULTIPLE_TASK*
  • 위의 FLAG_ACTIVITY_NEW_TASK와 같이 사용되며, 같이 사용할 경우 호출하는 액티비티는 무조건 새로운 태스크의 루트 액티비티로 생성된다.

FLAG_ACTIVITY_SINGLE_TOP

  • 태스크 가장 위쪽의 액티비티일 경우 재활용한다.(singleTop과 동일)

FLAG_ACTIVITY_CLEAR_TOP

  • 액티비티가 태스크에 존재한다면, 그 액티비티 위쪽에 존재하는 모든 액티비티를 제거하고 해당 액티비티를 활성화한다.

FLAG_ACTIVITY_NO_HISTORY

  • 액티비티가 스택에 존재하지 않도록 한다

'TIL > 스터디' 카테고리의 다른 글

Calendar 클래스  (0) 2024.02.29
hilt가 무엇인디?  (3) 2024.02.27
Subject 클래스(PublishSubject, ReplaySubject)  (0) 2024.02.22
Subject 클래스(AsyncSubject, BehaviorSubject)  (0) 2024.02.21
Hot Observable vs Cold Observable  (2) 2024.02.20
Share Link
reply
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30