13-4 태스크 관리

StrayCat·2022년 12월 9일
0

태스크

  • 태스크 관리란 액티비티를 어떻게 생성하고 관리하는지를 제어하는 일을 말한다.
  • 기본적으로는 시스템에서 태스크를 관리하지만, 특정 상황에서 개발자가 액티비티의 태스크를 관리하여 설정할 수 있다.

시스템에서 태스크 관리

  • 액티비티 태스크란 앱이 실행될 때 시스템에서 액티비티의 각종 정보를 저장하는 공간이다.

  • 예시로 Activity가 실행되면 아래와 같이 태스크가 스택으로 쌓이게 된다.

  • 특수한 상황으로 A앱에서 B앱의 Activity를 실행했다고 하면 아래와 같은 상태가 된다.

  • 이때, 런처에서 B앱을 다시 실행하여 B_TwoActivity를 실행하면 A앱 태스크와는 별개의 태스크를 생성한다.


태스크제어

  • 액티비티가 등록되는 매니페스트 파일의 <activity> 태그의 launchMode를 사용한다.
<activity android:launchMode="singleTop" ...>
...
</activity>
  • 인텐트의 flags 정보를 설정하여 제어한다.
val intent = Intent(this, TwoActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
  • 동일 Activity 반복 실행시 설정별 태스크 관리

  • 카카오톡 채팅방 예시로, 카톡채팅에 들어가있는 상태에서 카톡 알림을 눌러 새로운 채팅방을 켰을 경우를 보자.

    • standard라면, 새로운 채팅방이 열리면 새로운 태스크가 만들어진다.
    • singleTop이면 기존 채팅방 태스크의 내용만 변경한다.
  • singleTop의 경우 Intent의 내용을 자동으로 수정하는 콜백함수를 override하여 사용한다.

        override fun onNewIntent(intent: Intent?) {
            super.onNewIntent(intent)
        }

  • 위와 같이 실행을 할 때, B_OneActivity를 singleTask로 설정하면 새로운 태스크가 생성된다.

  • B_OneActivity를 singleInstance로 생성하면 해당 액티비티만 단일 태스크로 설정되고, 이후부터 새로운 태스크를 만든다.

0개의 댓글