작업 및 백스택

작업 및 백스택

하나의 어플리케이션에는 보통 여러개의 액티비티가 있는데 이 액티비티들은 스택안에 정력되며 이것을 백스택이라고 합니다. 또한 이 여러개의 액티비티들을 작업이라고 칭합니다. 사용자가 특정 작업을 수행할때 이것과 상호작용합니다.

백스택은 일종의 후입선출 객체 구조로 작동합니다.

작업이란 하나의 잘 짜여진 단위로 사용자가 새 작업을 시작할때 백그라운드로 이동할수 있고 홈버튼을 통해 메인화면으로 이동할수 있다. 작업의 모든 액티비티는 백그라운드에 있는 동안 중단되지만, 해당 작업에 대한 백스택은 유지됩니다. 또다른 작업이 발생하는동안 포커스를 잃을뿐이다.

Android 멀티태스킹은 백그라운드로 어플을 나갔다가 들어와도 백스택이 똑같은 상태로 살아있음으로 다시 어플을 사용할수있음을 말한다.

백스택에 있는 액티비티는 결코 다시 정렬되지 않으므로, 새 인스턴스가 생성되어 스택으로 푸쉬됩니다. 즉 같은 액티비티를 실행 시키면 똑같은 액티비티가 백스택에 쌓입니다. 이러한 부분을 원치 않으면 동작을 수정할수 있습니다. (작업관리 참조)

액티비티 상태저장

작업 관리

백스택 관리 내용 및 인텐트 플래그(내용참조)

시작 모드 정의

시작모드는 두가지로 정의할수있다.

  • 매니페스트 파일 사용 : 매니페스트 파일에서 액티비티 선언.
  • 인텐트 플래그 사용 : startActivity()로 호출해서 선언.

참고 : 매니페스트 파일에서 사용할 수 있는 시작 모드 중에는 인텐트의 플래그로 사용할 수는 없는것도 있으며, 이와 마찬가지로 인텐트 플래그로 사용할 수 있는 시작 모드 중에는 매니페스트에서 정의할 수 없는것도 있다.

시작모드를 정의하는 방법 기술(여러가지 방법이 있기 때문에 도큐먼트 문서 참고)

매니페스트 파일 사용

standard

singleTop

singleTask

singleInstance

인텐트 플래그사용

FLAG__ACTIVITY__NEW_TASK

FLAG_ACTIVITY_SINGLE_TOP

FLAG_ACTIVITY_CLEAR_TOP

유사성 처리

유사성이란 액티비티가 어느 작업에 소속되기를 선호하는지를 나타내는 것이다. 기본적으로 같은 어플리케이션에서 나온 액티비티는 서로 유사성을 지니고 있다. 따라서 기본적으로 같은 어플리케이션 안에 있는 모든 액티비티는 같은 작업안에 있는 것을 선호한다. 하지만 액티비티이에 대한 기본 유사성은 개발자가 수정할 수 있습니다. 다른 어플리케이션에서 정의된 액티비티가 하나의 유사성을 공유할수도 있고, 같은 어플리케이션에서 정의된 여러 액티비티에 서로 다른 작업 유사성을 할당할 수 있다.

<activity> taskAffinity : 특정 문자열 값을 취한다. 이것은 고유해야된다. 왜냐하면 시스템이 이이름을 사용하여 어플리케이션의 기본 작업 유사성을 식별하기 때문이다.

백스택 지우기

사용자가 작업을 오랜 시간 동안 떠나 있으면, 시스템이 루트 액티비티만 빼고 모든 액티비티를 해당 작업에서 지웁니다. 사용자가 다시 작업으로 돌아오면, 루트액티비티만 복원됩니다. 시스템이 이런 식으로 동작하는 것은 오랜 시간이 지난 다음에는 사용자가 전에 하던 일을 중단하고 새로운 일을 시작하기 위해 작업에 돌아올 가능성이 크기때문이다. 이동작을 수정하는데 사용할 수 있는 액티비티 특성이 몇가지 있다.

alwaysRetainTaskState

clearTaskOnLaunch

finishonTaskLaunch

작업 시작

매니페스트 파일에서 android.intent.action.MAIN, android.intent.category.LAUNCHER 시작

results matching ""

    No results matching ""