본문 바로가기

android

안드로이드 FLAG 정리

안드로이드 Intent Flag?

Activity를 시작할 때 인텐트에 특정 동작을 추가하거나 동작 방식을 수정하는데 사용됩니다.

 

1. FLAG_ACTIVITY_BROUGHT_TO_FRONT

  1. API 1에서 추가됨
  2. 이 플래그는 시스템에서 자동으로 설정해주는 플래그 입니다.
  3. 보통 singleTask 모드에서 사용되며 현재 앱에서 이미 열린 Activity가 있으면 그 Activity를 포그라운드로 가져오는 역할을 합니다.
  4. 즉 기존에 열린 Activity가 다시 화면에 올라오게 됩니다..

2.FLAG_ACTIVITY_CLEAR_TASK

  1. API 11에서 추가됨
  2. 이 플래그는 새로운 Activity를 시작하기 전에 기존 Activity 스택을 모두 지우는 역할을 합니다.
  3. 즉, 현재 실행 중인 Task를 비우고, 새로운 Task를 시작합니다.
  4. 기존 열려있는 모든 Activity를 종료하고 새로운 Activity를 시작합니다.

 

3.FLAG_ACTIVITY_CLEAR_TOP

  1. API 1에서 추가됨
  2. 이 플래그가 설정되며느 현재 실행중인 Task에서 시작하려는 Activity가 이미 열려있는 상태라면 그 Activity 위에 있는 모든 Activity가 종료됩니다.
  3. 기존의 Activity에 새로운 인텐트가 전달됩니다.
  4. 예를 들어, Activity 스택에 A, B, C, D가 있을 때 D에서 B를 호출하면 C와 D가 종료되고 B로 인텐트가 전달 됩니다.
  5. 간단 설명: 특정 Activity가 이미 열려 있으면 그 위에 있는 Activity를 모두 닫고 그 Activity에 새로운 정보를 전달한다.

 

4.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

  1. API 1에서 추가됨
  2. 새로운 Activity를 최근 앱 목록에 표시하지 않도록 설정한다.

 

5.FLAG_ACTIVITY_FORWARD_RESULT

  1. API 1에서 추가됨
  2. 현재 Activity에서 새로운 Activity를 시작할 때 현재 Activity에 대한 결과 처리를 새로운 Activity로 전달한다.
  3. 새로운 Activity가 종료되면 그 결과가 원래 Activity로 전달된다.

 

6.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

  1. API 1에서 추가됨
  2. Activity가 히스토리에서 재실행될 때 자동으로 설정됨
  3. 최근 실행한 Activity를 다시 열 때 발생한다.

 

7.FLAG_ACTIVITY_LAUNCH_ADJACENT

  1. API 24에서 추가됨
  2. Split-screen 모드에서 사용된다.
  3. 새로운 Activity를 시작할 때 현재 Activity와 나란히 배치되도록 하는 플래그이다.
  4. FLAG_ACTIVITY_NEW_TASK와 함께 사용해야한다.

 

8.FLAG_ACTIVITY_MATCH_EXTERNAL

  1. API 28에서 추가됨
  2. Instant App을 실행할 수 있도록한다.
  3. 인스턴트 앱이 없다면 전체 앱을 실행할 수 있는 방법을 찾거나 설치를 유도한다.
  4. 이 플래그는 인스턴스 앱을 지원하는 기기에서만 유효하다.

 

9.FLAG_ACTIVITY_MULTIPLE_TASK

  1. API 1에서 추가됨
  2. 새로운 Task를 생성할 때 사용됩니다.
  3. 기존 Task에 새 Activity를 추가하지 않고 새로운 Task를 만들어 해당 Activity를 시작합니다.
  4. 같은 Activity라도 여러개의 Task를 가질 수 있다.

 

10.FLAG_ACTIVITY_NEW_DOCUMENT

  1. API 21에서 추가됨
  2. 새로운 Document(문서)를 시작할 때 사용된다.
  3. 주로 멀티태스킹 또는 문서 기반 앱에서 사용됩니다.
  4. 새로운 문서를 시작하면 기존 문서 작업과 별개로 새로운 문서가 시작됩니다.

 

11.FLAG_ACTIVITY_NEW_TASK

  1. API 1에서 추가됨
  2. 새로운 Task를 시작할 때 사용됩니다. 
  3. 시작하려는 액티비티를 이미 실행 중인 태스크가 있다면 해당 태스크가 전면으로 가져와지고, 그렇지 않다면 새로운 태스크가 생성된다.
  4. 보통 홈 화면이나 알림에서 앱을 열 때 사용된다.

 

12.FLAG_ACTIVITY_NO_ANIMATION

  1. API 5에서 추가됨
  2. Activity가 시작되거나 종료될 때 애니메이션 효과가 없어진다.
  3. 애니메이션은 제외하고 Activity를 바로 시작하거나 종료할 수 있다.

 

13.FLAG_ACTIVITY_NO_HISTORY

  1. API 1에서 추가됨
  2. Activity가 종료되면 기록을 남기지 않도록 한다.
  3. 이 Activity는 최근 Activity 목록에 기록되지 않는다.

 

14.FLAG_ACTIVITY_NO_USER_ACTION

  1. API 3에서 추가됨
  2. Activity가 시작될 때, 사용자의 입력을 기다리지 않도록 한다.
  3. Activity이 시작되자마자 바로 실행되며 사용자의 동작 없이 자동으로 진행되는 경우에 사용된다.

15.FLAG_ACTIVITY_PREVIOUS_IS_TOP

  1. API 1에서 추가됨
  2. 현재 Activity가 시작되기 전에 이미 열려있던 Activity가 최상단에 있으면 그 Activity를 유지하면서 새로운 Activity를 시작하게 된다.
  3. 즉, 현재 활동을 기존 스택 위에 놓고 새로운 Activity를 그 아래에 쌓는다.

 

16.FLAG_ACTIVITY_REORDER_TO_FRONT

  1. API 3에서 추가됨
  2. 현재 시작하려는 Activity가 이미 실행 중이면 그 Activity를 스택의 최상단으로 가져온다.
  3. 새로운 Activity를 시작하지 않고, 이미 실행중인 Activity를 앞으로 가져와 그 Activity를 다시 실행하도록 한다.

 

17.FLAG_ACTIVITY_REQUIRE_DEFAULT

  1. API 30에서 추가됨
  2. Activity를 시작할 때 기본적인 동작을 강제하는 역할을 한다.
  3. 즉 이 플래그가 설정되면, Activity가 기본적으로 정의된 대로만 실행되도록 보장된다.
  4. 예를 들어 특정앱이 인텐트를 처리할 때 기본 설정으로 만 처리하도록 강제할 수 있다.

18.FLAG_ACTIVITY_REQUIRE_NON_BROWSER

  1. API 30에서 추가됨
  2. 브라우저를 제외한 기타 앱에서 인텐트를 처리하도록 강제하는 플래그이다.
  3. 사용자가 웹페이지를 열려고 할 때, 이 플래그가 설정되면 브라우저 앱을 제외한 다른 앱에서 해당 인텐트를 처리하도록 유도합니다.
  4. 주로 웹뷰나 커스텀 웹 브라우저를 사용하여 웹페이지를 열 때 유용할 수 있습니다.

 

19.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

  1. API 1에서 추가됨
  2. 새로운 Activity를 시작할 때 현재 Activity가 현재 Task에 맞는 적절한 상태로 초기화 되도록 합니다.
  3. 현재 Task를 재설정할 수 있으며, 만약 필요하다면 Task를 리셋하여 새로운 Activity를 시작합니다.
  4. 예를 들어 기존 작업이 불완전한 상태로 있을 때 이를 초기화하고새로 시작할 수 있도록 합니다.

 

20.FLAG_ACTIVITY_RETAIN_IN_RECENTS

  1. API 21에서 추가됨
  2. Activity가 종료된 후에도 최근 앱 목록에 남아 있도록 합니다.
  3. 기본적으로 Activity가 종료되면 최근 앱목록에서 사라지지만, 이 플래그를 설정하면 종료된 후에도 최근 앱 목록에 남아있게 됩니다.
  4. 앱이 종료되더라도 사용자가 이전 Activity를 쉽게 다시 시작할 수 있도록 하는 경우에 유용합니다.

21.FLAG_ACTIVITY_SINGLE_TOP

  1. API 1에서 추가됨
  2. 현재 Activity가 이미 최상단에 있을 경우, 새로운 인텐트를 사용해도 새로운 인텐트를 생성하지 않고 기존 Activity를 재사용하도록 합니다. 즉, 최상단에 이미 존재하는 Activity에 새로운 인텐트가 전달되고, 해당 Activity의 onNewIntent() 메서드가 호출됩니다.
  3. 이를 사용하면 같은 Activity를 여러번 띄우는 대신, 기존 Activity에 새로운 데이터를 전달할 수 있습ㄴ디ㅏ.

22. FLAG_ACTIVITY_TASK_ON_HOME

  1. API 11에서 추가됨
  2. 홈화면에서 직접 실행한 앱이 새로운 Task를 시작하도록 강제하는 플래그입니다.
  3. 이 플래그가 설정되면 앱이 실행될 때 현재 실행 중인 Task와는 별도로 새로운 작업을 시작하게 됩니다.
  4. 홈화면에서 바로 앱을 실행할 때 새 작업을 만들고 싶을 때 사용됩니다. 
  5. 보통 앱이 독립적인 공간을 가지도록 할 때 유용합니다.