안드로이드 Intent Flag?
Activity를 시작할 때 인텐트에 특정 동작을 추가하거나 동작 방식을 수정하는데 사용됩니다.
1. FLAG_ACTIVITY_BROUGHT_TO_FRONT
- API 1에서 추가됨
- 이 플래그는 시스템에서 자동으로 설정해주는 플래그 입니다.
- 보통 singleTask 모드에서 사용되며 현재 앱에서 이미 열린 Activity가 있으면 그 Activity를 포그라운드로 가져오는 역할을 합니다.
- 즉 기존에 열린 Activity가 다시 화면에 올라오게 됩니다..
2.FLAG_ACTIVITY_CLEAR_TASK
- API 11에서 추가됨
- 이 플래그는 새로운 Activity를 시작하기 전에 기존 Activity 스택을 모두 지우는 역할을 합니다.
- 즉, 현재 실행 중인 Task를 비우고, 새로운 Task를 시작합니다.
- 기존 열려있는 모든 Activity를 종료하고 새로운 Activity를 시작합니다.
3.FLAG_ACTIVITY_CLEAR_TOP
- API 1에서 추가됨
- 이 플래그가 설정되며느 현재 실행중인 Task에서 시작하려는 Activity가 이미 열려있는 상태라면 그 Activity 위에 있는 모든 Activity가 종료됩니다.
- 기존의 Activity에 새로운 인텐트가 전달됩니다.
- 예를 들어, Activity 스택에 A, B, C, D가 있을 때 D에서 B를 호출하면 C와 D가 종료되고 B로 인텐트가 전달 됩니다.
- 간단 설명: 특정 Activity가 이미 열려 있으면 그 위에 있는 Activity를 모두 닫고 그 Activity에 새로운 정보를 전달한다.
4.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
- API 1에서 추가됨
- 새로운 Activity를 최근 앱 목록에 표시하지 않도록 설정한다.
5.FLAG_ACTIVITY_FORWARD_RESULT
- API 1에서 추가됨
- 현재 Activity에서 새로운 Activity를 시작할 때 현재 Activity에 대한 결과 처리를 새로운 Activity로 전달한다.
- 새로운 Activity가 종료되면 그 결과가 원래 Activity로 전달된다.
6.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
- API 1에서 추가됨
- Activity가 히스토리에서 재실행될 때 자동으로 설정됨
- 최근 실행한 Activity를 다시 열 때 발생한다.
7.FLAG_ACTIVITY_LAUNCH_ADJACENT
- API 24에서 추가됨
- Split-screen 모드에서 사용된다.
- 새로운 Activity를 시작할 때 현재 Activity와 나란히 배치되도록 하는 플래그이다.
- FLAG_ACTIVITY_NEW_TASK와 함께 사용해야한다.
8.FLAG_ACTIVITY_MATCH_EXTERNAL
- API 28에서 추가됨
- Instant App을 실행할 수 있도록한다.
- 인스턴트 앱이 없다면 전체 앱을 실행할 수 있는 방법을 찾거나 설치를 유도한다.
- 이 플래그는 인스턴스 앱을 지원하는 기기에서만 유효하다.
9.FLAG_ACTIVITY_MULTIPLE_TASK
- API 1에서 추가됨
- 새로운 Task를 생성할 때 사용됩니다.
- 기존 Task에 새 Activity를 추가하지 않고 새로운 Task를 만들어 해당 Activity를 시작합니다.
- 같은 Activity라도 여러개의 Task를 가질 수 있다.
10.FLAG_ACTIVITY_NEW_DOCUMENT
- API 21에서 추가됨
- 새로운 Document(문서)를 시작할 때 사용된다.
- 주로 멀티태스킹 또는 문서 기반 앱에서 사용됩니다.
- 새로운 문서를 시작하면 기존 문서 작업과 별개로 새로운 문서가 시작됩니다.
11.FLAG_ACTIVITY_NEW_TASK
- API 1에서 추가됨
- 새로운 Task를 시작할 때 사용됩니다.
- 시작하려는 액티비티를 이미 실행 중인 태스크가 있다면 해당 태스크가 전면으로 가져와지고, 그렇지 않다면 새로운 태스크가 생성된다.
- 보통 홈 화면이나 알림에서 앱을 열 때 사용된다.
12.FLAG_ACTIVITY_NO_ANIMATION
- API 5에서 추가됨
- Activity가 시작되거나 종료될 때 애니메이션 효과가 없어진다.
- 애니메이션은 제외하고 Activity를 바로 시작하거나 종료할 수 있다.
13.FLAG_ACTIVITY_NO_HISTORY
- API 1에서 추가됨
- Activity가 종료되면 기록을 남기지 않도록 한다.
- 이 Activity는 최근 Activity 목록에 기록되지 않는다.
14.FLAG_ACTIVITY_NO_USER_ACTION
- API 3에서 추가됨
- Activity가 시작될 때, 사용자의 입력을 기다리지 않도록 한다.
- Activity이 시작되자마자 바로 실행되며 사용자의 동작 없이 자동으로 진행되는 경우에 사용된다.
15.FLAG_ACTIVITY_PREVIOUS_IS_TOP
- API 1에서 추가됨
- 현재 Activity가 시작되기 전에 이미 열려있던 Activity가 최상단에 있으면 그 Activity를 유지하면서 새로운 Activity를 시작하게 된다.
- 즉, 현재 활동을 기존 스택 위에 놓고 새로운 Activity를 그 아래에 쌓는다.
16.FLAG_ACTIVITY_REORDER_TO_FRONT
- API 3에서 추가됨
- 현재 시작하려는 Activity가 이미 실행 중이면 그 Activity를 스택의 최상단으로 가져온다.
- 새로운 Activity를 시작하지 않고, 이미 실행중인 Activity를 앞으로 가져와 그 Activity를 다시 실행하도록 한다.
17.FLAG_ACTIVITY_REQUIRE_DEFAULT
- API 30에서 추가됨
- Activity를 시작할 때 기본적인 동작을 강제하는 역할을 한다.
- 즉 이 플래그가 설정되면, Activity가 기본적으로 정의된 대로만 실행되도록 보장된다.
- 예를 들어 특정앱이 인텐트를 처리할 때 기본 설정으로 만 처리하도록 강제할 수 있다.
18.FLAG_ACTIVITY_REQUIRE_NON_BROWSER
- API 30에서 추가됨
- 브라우저를 제외한 기타 앱에서 인텐트를 처리하도록 강제하는 플래그이다.
- 사용자가 웹페이지를 열려고 할 때, 이 플래그가 설정되면 브라우저 앱을 제외한 다른 앱에서 해당 인텐트를 처리하도록 유도합니다.
- 주로 웹뷰나 커스텀 웹 브라우저를 사용하여 웹페이지를 열 때 유용할 수 있습니다.
19.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- API 1에서 추가됨
- 새로운 Activity를 시작할 때 현재 Activity가 현재 Task에 맞는 적절한 상태로 초기화 되도록 합니다.
- 현재 Task를 재설정할 수 있으며, 만약 필요하다면 Task를 리셋하여 새로운 Activity를 시작합니다.
- 예를 들어 기존 작업이 불완전한 상태로 있을 때 이를 초기화하고새로 시작할 수 있도록 합니다.
20.FLAG_ACTIVITY_RETAIN_IN_RECENTS
- API 21에서 추가됨
- Activity가 종료된 후에도 최근 앱 목록에 남아 있도록 합니다.
- 기본적으로 Activity가 종료되면 최근 앱목록에서 사라지지만, 이 플래그를 설정하면 종료된 후에도 최근 앱 목록에 남아있게 됩니다.
- 앱이 종료되더라도 사용자가 이전 Activity를 쉽게 다시 시작할 수 있도록 하는 경우에 유용합니다.
21.FLAG_ACTIVITY_SINGLE_TOP
- API 1에서 추가됨
- 현재 Activity가 이미 최상단에 있을 경우, 새로운 인텐트를 사용해도 새로운 인텐트를 생성하지 않고 기존 Activity를 재사용하도록 합니다. 즉, 최상단에 이미 존재하는 Activity에 새로운 인텐트가 전달되고, 해당 Activity의 onNewIntent() 메서드가 호출됩니다.
- 이를 사용하면 같은 Activity를 여러번 띄우는 대신, 기존 Activity에 새로운 데이터를 전달할 수 있습ㄴ디ㅏ.
22. FLAG_ACTIVITY_TASK_ON_HOME
- API 11에서 추가됨
- 홈화면에서 직접 실행한 앱이 새로운 Task를 시작하도록 강제하는 플래그입니다.
- 이 플래그가 설정되면 앱이 실행될 때 현재 실행 중인 Task와는 별도로 새로운 작업을 시작하게 됩니다.
- 홈화면에서 바로 앱을 실행할 때 새 작업을 만들고 싶을 때 사용됩니다.
- 보통 앱이 독립적인 공간을 가지도록 할 때 유용합니다.
'android' 카테고리의 다른 글
[안드로이드] READ_EXTERNAL_STORAGE (0) | 2025.05.21 |
---|---|
18. Android) R8 (0) | 2024.01.22 |
17.Android 기기에 device owner를 설정하는 방법 (1) | 2024.01.05 |
15. 안드로이드 동시성 코루틴 공부 (0) | 2023.12.14 |
14. 안드로이드 Handler 공부 (1) | 2023.12.08 |