- 문법:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] android:directBootAware=["true" | "false"] android:documentLaunchMode=["intoExisting" | "always" | "none" | "never"] android:enabled=["true" | "false"] android:enabledOnBackInvokedCallback=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:immersive=["true" | "false"] android:label="string resource" android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance" | "singleInstancePerTask"] android:lockTaskMode=["normal" | "never" | "if_whitelisted" | "always"] android:maxRecents="integer" android:maxAspectRatio="float" android:multiprocess=["true" | "false"] android:name="string" android:noHistory=["true" | "false"] android:parentActivityName="string" android:persistableMode=["persistRootOnly" | "persistAcrossReboots" | "persistNever"] android:permission="string" android:process="string" android:relinquishTaskIdentity=["true" | "false"] android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" | "readOrWrite" | "write"] android:resizeableActivity=["true" | "false"] android:screenOrientation=["unspecified" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "userLandscape" | "userPortrait" | "sensor" | "fullSensor" | "nosensor" | "user" | "fullUser" | "locked"] android:showForAllUsers=["true" | "false"] android:stateNotNeeded=["true" | "false"] android:supportsPictureInPicture=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > ... </activity>
- 포함된 위치:
<application>
- 포함 가능한 요소:
<intent-filter>
<meta-data>
<layout>
- 설명:
- 애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 활동(
Activity
서브클래스)을 선언합니다. 모든 활동은 매니페스트 파일에서<activity>
요소로 나타내야 합니다. 여기에 선언되지 않은 활동은 시스템에 표시되지 않으며 실행되지 않습니다. - 속성:
android:allowEmbedded
-
활동이 다른 활동의 삽입된 하위 요소로 실행될 수 있음을 나타냅니다. 특히 하위 요소가 컨테이너에 상주하는 경우 예: 다른 활동이 소유한
Display
예를 들어 Wear 맞춤 알림에 사용되는 활동은 Wear가 다른 프로세스에 있는 컨텍스트 스트림에 활동을 표시할 수 있도록 이 속성을 선언합니다.이 속성의 기본값은
false
입니다. android:allowTaskReparenting
- 활동을 시작한 작업에서 그 작업이 다음에 앞으로 나올 때 어피니티가 있는 작업으로 활동을 이동할 수 있는지를 나타냅니다. 이동할 수 있으면
"true"
이고 시작된 작업에 남아 있으면"false"
입니다.이 속성을 설정하지 않으면
<application>
요소의 상응하는allowTaskReparenting
속성에서 설정한 값이 활동에 적용됩니다. 기본값은"false"
입니다.일반적으로 활동이 시작되면 활동을 시작한 작업과 연결되어 전체 기간이 끝날 때까지 그대로 남아 있습니다. 이 속성을 사용하여 현재 작업이 더 이상 표시되지 않을 때 활동의 상위 요소로 어피니티가 있는 작업을 강제 재지정할 수 있습니다. 보통 애플리케이션의 활동을 애플리케이션과 관련된 주요 작업으로 이동시키기 위해 이 속성을 사용합니다.
예를 들어 이메일 메시지가 웹페이지 링크를 포함하는 경우 링크를 클릭하면 페이지를 표시할 수 있는 활동을 표시합니다. 이 활동은 브라우저 애플리케이션이 정의하지만 이메일 작업의 일부로 실행됩니다. 상위 활동을 브라우저 작업으로 재지정할 경우 활동은 브라우저가 다음에 앞으로 올 때 표시되며 이메일 작업이 다시 앞으로 올 때 표시되지 않습니다.
taskAffinity
속성이 활동의 어피니티를 정의합니다. 작업의 어피니티는 루트 활동의 어피니티에 의해 결정됩니다. 따라서 정의상 루트 활동은 항상 어피니티가 같은 작업에 있습니다. 시작 모드가"singleTask"
또는"singleInstance"
인 활동은 작업의 루트에만 있을 수 있으므로 상위 요소로의 재지정은"standard"
및"singleTop"
모드로 제한됩니다.launchMode
속성도 참고하세요. android:alwaysRetainTaskState
- 활동이 있는 작업의 상태를 항상 시스템이 유지하는지를 나타냅니다. 유지하면
"true"
이고 시스템이 특정 상황에서 작업을 초기 상태로 재설정할 수 있으면"false"
입니다. 기본값은"false"
입니다. 이 속성은 작업의 루트 활동에만 의미가 있습니다. 다른 모든 활동에서는 무시됩니다.보통 시스템은 사용자가 홈 화면에서 작업을 다시 선택하는 특정 상황에서 작업을 지웁니다(루트 활동 위 스택에서 모든 활동을 제거함). 일반적으로 지우기는 사용자가 30분과 같이 특정 시간 동안 작업을 방문하지 않는 경우 실행됩니다.
그러나 이 속성이
"true"
인 경우 사용자는 도착 방법과 상관없이 항상 마지막 상태의 작업으로 돌아갑니다. 이는 사용자가 손실을 원하지 않는 여러 상태(예: 열려 있는 여러 탭)가 있는 웹브라우저 등의 애플리케이션에서 유용합니다. android:autoRemoveFromRecents
- 이 속성이 있는 활동에서 시작한 작업이 작업의 마지막 활동이 완료될 때까지 최근 화면에 유지되는지를 나타냅니다. 이 값이
true
인 경우 작업은 최근 화면에서 자동으로 제거됩니다. 이는 호출자의FLAG_ACTIVITY_RETAIN_IN_RECENTS
사용을 재정의합니다. 불리언 값("true"
또는"false"
)이어야 합니다. android:banner
- 연결된 항목에 확장 그래픽 배너를 제공하는 드로어블 리소스입니다.
<activity>
태그와 함께 사용하여 특정 활동의 기본 배너를 제공하거나<application>
태그와 함께 사용하여 모든 애플리케이션 활동의 배너를 제공합니다.시스템에서는 배너를 사용하여 Android TV 홈 화면에서 앱을 나타냅니다. 배너는 홈 화면에만 표시되므로
CATEGORY_LEANBACK_LAUNCHER
인텐트를 처리하는 활동이 있는 애플리케이션에서만 배너를 지정합니다.이 속성은
"@drawable/banner"
와 같이 이미지가 포함된 드로어블 리소스의 참조로 설정됩니다. 기본 배너는 없습니다.자세한 내용은 TV 앱 시작하기에서 홈 화면 배너 제공을 참고하세요.
android:canDisplayOnRemoteDevices
-
활동이 원격 기기에 표시될 수 있는지 여부를 나타냅니다. Android를 실행 중일 수도 있고 없을 수도 있습니다 불리언 값이어야 합니다.
"true"
또는"false"
이 속성의 기본값은
"true"
입니다. android:clearTaskOnLaunch
- 홈 화면에서 다시 시작할 때 루트 활동을 제외한 모든 활동을 작업에서 삭제할지 나타냅니다.
작업이 항상 루트 활동까지 제거되는 경우
"true"
이고 그렇지 않으면"false"
입니다. 기본값은"false"
입니다. 이 속성은 새 작업을 시작하는 활동, 즉 루트 활동에만 의미가 있습니다. 작업의 다른 모든 활동에서는 무시됩니다.이 값이
"true"
인 경우 사용자가 작업을 시작할 때마다 마지막으로 실행한 작업과 상관없이 그리고 뒤로 버튼이나 홈 버튼을 눌러 작업 중인 화면을 떠났는지 여부와 상관없이 루트 활동으로 이동합니다. 값이"false"
이면 일부 상황에서 작업의 활동을 삭제할 수 있지만 항상 그런 것은 아닙니다. 자세한 내용은alwaysRetainTaskState
속성을 참고하세요.사용자가 홈 화면에서 활동 P를 시작한 후 P에서 활동 Q로 이동한다고 가정해 보겠습니다. 그런 다음 사용자는 홈을 누르고 활동 P로 돌아갑니다. 일반적으로 사용자에게는 활동 Q가 표시됩니다. P의 작업에서 마지막으로 실행했기 때문입니다. 그러나 P에서 이 플래그를
"true"
로 설정하면 사용자가 홈 화면에서 활동 P를 실행할 때 그 위에 있는 모든 활동(이 경우 Q)이 삭제됩니다. 따라서 사용자가 작업으로 돌아가면 P만 보입니다.이 속성과
allowTaskReparenting
이 모두"true"
이면 상위 요소로 재지정할 수 있는 모든 활동은 어피니티를 공유하는 작업으로 이동됩니다. 그러면 나머지 활동이 삭제됩니다.이 속성은
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
가 설정되지 않은 경우 무시됩니다. android:colorMode
활동의 색상 모드를 지정합니다. 지정된 경우
hdr
또는wideColorGamut
이 될 수 있습니다.hdr
이면 기기에서 지원하는 경우 활동이 HDR(High Dynamic Range)로 표시되도록 요청합니다.wideColorGamut
이면 호환되는 기기에서 넓은 색 공간 모드로 활동을 표시하도록 요청합니다. 넓은 색 공간 모드에서 창은SRGB
공간 밖을 렌더링하여 더욱 선명한 색을 표시할 수 있습니다. 기기가 넓은 색 공간 렌더링을 지원하지 않으면 이 속성은 아무런 효과가 없습니다. 넓은 색 모드 렌더링에 관한 자세한 내용은 넓은 색 콘텐츠로 그래픽 향상을 참고하세요.android:configChanges
- 활동이 스스로 처리하는 구성 변경을 나열합니다. 구성 변경이 런타임에 발생하는 경우 활동은 기본적으로 종료되었다가 다시 시작되지만 이 속성을 사용하여 구성을 선언하면 활동이 다시 시작되지 않습니다. 그 대신 활동은 여전히 실행 상태에 있고
onConfigurationChanged()
메서드가 호출됩니다.참고: 이 속성은 애플리케이션 성능과 반응성을 개선하기 위해 특수한 경우에만 사용합니다. 자세한 내용은 구성 변경 처리를 참고하세요.
다음 문자열은 이 속성에 유효한 값입니다. 여러 값은
|
로 구분됩니다(예:"locale|navigation|orientation"
).값 설명 "colorMode"
화면의 색상 모드 기능 (색 영역 또는 다이내믹 레인지)이 변경되었습니다.
참고:
colorMode
속성을 사용하여 또는 런타임에 활동이 요청하는 색상 모드는 다양한 색상 모드의 기능과 다릅니다. 사용하는 색상 모드를 변경하는 Activity는 구성을 변경하지 않습니다. 디스플레이의 색상 기능이 변경되지 않았기 때문입니다."density"
화면 밀도 변경입니다(예: 사용자가 다른 디스플레이 크기를 지정하거나 다른 디스플레이가 활성화될 때).
API 수준 24에 추가되었습니다.
"fontScale"
글꼴 배율 변경입니다(예: 사용자가 새 전역 글꼴 크기를 선택할 때). "fontWeightAdjustment"
글꼴 두께가 증가했습니다. "grammaticalGender"
언어의 문법적 성별이 변경되었습니다. 자세한 내용은 <ph type="x-smartling-placeholder"></ph> GrammaticalInflectionManager
API 수준 34에 추가되었습니다.
"keyboard"
키보드 유형 변경입니다(예: 사용자가 외부 키보드를 연결할 때). "keyboardHidden"
키보드 접근성 변경입니다(예: 사용자가 하드웨어 키보드를 표시하는 경우). "layoutDirection"
레이아웃 방향 변경입니다(예: 왼쪽에서 오른쪽(LTR)에서 오른쪽에서 왼쪽(RTL)으로).
API 수준 17에 추가되었습니다.
"locale"
언어 변경입니다(예: 사용자가 텍스트를 표시할 새 언어를 선택하는 경우). "mcc"
MCC를 업데이트하는 SIM이 감지되면 IMSI 모바일 국가 코드(MCC)가 변경됩니다. "mnc"
MNC를 업데이트하는 SIM이 감지되면 IMSI 모바일 네트워크 코드(MNC)가 변경됩니다. "navigation"
탐색 유형(트랙볼 또는 D패드) 변경입니다. 일반적으로는 발생하지 않습니다. "orientation"
화면 방향 변경입니다(예: 사용자가 기기를 회전할 때).
참고: 애플리케이션이 Android 3.2(API 수준 13) 이상을 타겟팅하는 경우
"screenLayout"
및"screenSize"
구성도 선언해야 합니다. 기기가 세로 모드와 가로 모드 방향 간에 전환될 때 화면 레이아웃과 화면의 크기가 변경될 수도 있기 때문입니다."screenLayout"
화면 레이아웃 변경입니다(예: 다른 디스플레이가 활성화되는 경우). "screenSize"
현재 사용 가능한 화면 크기 변경입니다.
이는 현재 가로세로 비율을 기준으로 현재 사용 가능한 크기의 변경을 나타내므로 사용자가 가로 모드와 세로 모드 간에 전환할 때 변경됩니다.
API 수준 13에 추가되었습니다.
"smallestScreenSize"
실제 화면 크기 변경입니다.
이는 방향과 상관없는 크기 변경을 나타내므로 외부 디스플레이로 전환하는 등 실제 화면 크기가 변경될 때만 변경됩니다. 이 구성 변경은
smallestWidth
구성변경에 상응합니다.API 수준 13에 추가되었습니다.
"touchscreen"
터치스크린 변경입니다. 일반적으로는 발생하지 않습니다. "uiMode"
사용자 인터페이스 모드 변경입니다(예: 사용자가 기기를 책상 또는 차량용 도크에 놓거나 야간 모드가 변경되는 경우). 각 UI 모드에 관한 자세한 내용은 UiModeManager
를 참고하세요.API 수준 8에 추가되었습니다.
이와 같은 모든 구성 변경은 애플리케이션이 표시하는 리소스 값에 영향을 미칠 수 있습니다. 따라서
onConfigurationChanged()
를 호출할 때 일반적으로 뷰 레이아웃과 드로어블을 비롯한 모든 리소스를 다시 검색하여 변경사항을 올바르게 처리해야 합니다.참고: 멀티 윈도우 관련 구성 변경을 처리하려면
"screenLayout"
과"smallestScreenSize"
를 모두 사용하세요. 멀티 윈도우는 Android 7.0(API 수준 24) 이상에서 지원됩니다. android:directBootAware
활동이 직접 부팅을 인식하는지, 즉 사용자가 기기를 잠금 해제하기 전에 실행될 수 있는지를 나타냅니다.
참고: 직접 부팅 시 애플리케이션의 활동은 기기 보호 저장소에 저장된 데이터에만 액세스할 수 있습니다.
기본값은
"false"
입니다.android:documentLaunchMode
- 활동이 시작될 때마다 활동의 새 인스턴스가 작업에 추가되는 방식을 지정합니다.
이 속성을 통해 사용자가 동일한 애플리케이션의 다중 문서를 최근 화면에 표시할 수 있습니다.
이 속성에는 사용자가 애플리케이션으로 문서를 열 때 다음과 같은 효과를 낳는 네 가지 값이 있습니다.
값 설명 "intoExisting"
시스템이 기본 인텐트의 ComponentName
및 데이터 URI가 시작 인텐트의 이 두 항목과 일치하는 작업을 검색합니다. 시스템이 이러한 작업을 찾으면 시스템은 작업을 지우고onNewIntent(android.content.Intent)
호출을 수신하는 루트 활동으로 다시 시작합니다. 시스템은 이러한 작업을 찾지 못하면 새 작업을 만듭니다."always"
활동이 문서에 관해 새 작업을 생성하며 이는 문서가 이미 열려 있는 경우라도 마찬가지입니다. 이는 FLAG_ACTIVITY_NEW_DOCUMENT
및FLAG_ACTIVITY_MULTIPLE_TASK
플래그를 모두 설정하는 것과 같습니다."none"
활동이 활동에 관해 새 작업을 생성하지 않습니다. 이는 기본값이며 FLAG_ACTIVITY_NEW_TASK
를 설정하는 경우에만 새 작업을 생성합니다. 최근 화면은 활동을 기본적인 방식으로 처리합니다. 즉, 앱의 단일 작업을 표시하며 이때 사용자가 마지막으로 호출한 활동이 무엇이든 관계없이 그 활동부터 다시 시작합니다."never"
인텐트에 FLAG_ACTIVITY_NEW_DOCUMENT
가 포함되어 있어도 활동이 새 문서로 시작되지 않습니다. 이를 설정하면FLAG_ACTIVITY_NEW_DOCUMENT
및FLAG_ACTIVITY_MULTIPLE_TASK
플래그 중 하나가 활동에 설정되어 있는 경우 이러한 플래그의 동작을 재정의하고 최근 화면은 앱의 단일 작업을 표시하며 이때 사용자가 마지막으로 호출한 활동부터 다시 시작합니다.참고:
"none"
및"never"
이외의 값에서는 활동이launchMode="standard"
로 정의됩니다. 이 속성을 지정하지 않으면documentLaunchMode="none"
이 사용됩니다. android:enabled
- 시스템에서 활동을 인스턴스화할 수 있는지를 나타냅니다. 할 수 있으면
"true"
이고 할 수 없으면"false"
입니다. 기본값은"true"
입니다.<application>
요소에는 활동을 포함한 모든 애플리케이션 구성요소에 적용되는 자체enabled
속성이 있습니다. 시스템에서 활동을 인스턴스화할 수 있으려면<application>
속성과<activity>
속성이 모두"true"
여야 합니다(기본적으로 두 속성 모두 true임). 둘 중 하나가"false"
이면 인스턴스화할 수 없습니다. android:enableOnBackInvokedCallback
- 이 플래그를 사용하면 활동 수준에서 예측 시스템 애니메이션을 선택할 수 있습니다. 이렇게 하면 대규모 다중 활동 앱을 뒤로 탐색 예측 동작으로 더 쉽게 이전할 수 있습니다.
android:enableOnBackInvokedCallback=false
를 설정하면 태그를 설정한 위치에 따라 활동 수준 또는 앱 수준에서 뒤로 탐색 예측 애니메이션이 사용 중지되고OnBackInvokedCallback
플랫폼 API 호출을 무시하도록 시스템에 지시됩니다. android:excludeFromRecents
이 활동에서 시작된 작업이 에서 제외되는지 여부입니다. 최근 화면. 즉, 이 활동이 새 작업의 루트 활동인 경우 이 속성은 최근 앱 목록에 작업을 표시할지를 결정합니다. 그것은 할 일이 목록에서 제외된 경우
"true"
, 답이 '"false"
'인 경우 포함됩니다. 기본값은"false"
입니다.android:exported
활동을 다른 구성요소의 구성요소에서 시작할 수 있는지 여부 애플리케이션:
"true"
인 경우 모든 앱에서 활동에 액세스할 수 있으며 정확한 클래스 이름으로 활동을 시작할 수 있습니다."false"
인 경우 활동은 같은 애플리케이션의 구성요소나 사용자 ID가 같은 애플리케이션, 권한이 있는 시스템 구성요소에서만 시작될 수 있습니다. 이는 인텐트 필터가 없는 경우의 기본값입니다.
앱의 활동에 인텐트 필터가 포함되어 있으면 이 요소를
"true"
로 설정하여 다른 앱에서 활동을 시작할 수 있게 합니다. 활동이 앱의 기본 활동이고category
android.intent.category.LAUNCHER
를 포함하는 경우를 예로 들 수 있습니다.이 요소가
"false"
로 설정되어 있고 앱에서 활동을 시작하려고 하면 시스템에서ActivityNotFoundException
이 발생합니다.이 속성 외에도 다른 애플리케이션에 대한 활동 노출을 제한하는 방법이 있습니다. 권한은 활동을 호출할 수 있는 외부 항목을 제한하는 데도 사용됩니다.
permission
속성을 참고하세요.android:finishOnTaskLaunch
- 사용자가 홈 화면에서 작업을 선택하여 작업을 다시 실행할 때 루트 활동을 제외하고 활동의 기존 인스턴스가 종료되는지를 나타냅니다. 종료되면
"true"
이고 종료되지 않으면"false"
입니다. 기본값은"false"
입니다.이 속성과
allowTaskReparenting
이 모두"true"
이면 이 속성이 다른 속성에 우선합니다. 활동의 어피니티는 무시됩니다. 활동은 상위 요소로 재지정되지 않고 소멸됩니다.이 속성은
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
가 설정되지 않은 경우 무시됩니다. android:hardwareAccelerated
- 이 활동에 하드웨어 가속 렌더링이 사용 설정되어 있는지 나타냅니다. 사용 설정된 경우
"true"
, 사용 설정되지 않은 경우"false"
입니다. 기본값은"false"
입니다.Android 3.0 이상에서는 하드웨어 가속 OpenGL 렌더기를 애플리케이션에 제공하여 여러 일반적인 2D 그래픽 작업의 성능을 개선합니다. 하드웨어 가속 렌더기를 사용 설정하면 Canvas, Paint, Xfermode, ColorFilter, Shader, Camera의 대부분의 작업이 가속화됩니다.
따라서 프레임워크의 OpenGL 라이브러리를 명시적으로 사용하지 않는 애플리케이션에서도 애니메이션과 스크롤이 더 매끄러워지고 전반적인 응답성이 향상됩니다. 하드웨어 가속을 사용하려면 필요한 리소스가 늘어나므로 앱에서 더 많은 RAM을 사용합니다.
모든 OpenGL 2D 작업이 가속화되는 것은 아닙니다. 하드웨어 가속 렌더기를 사용 설정하는 경우 애플리케이션에서 오류 없이 렌더기를 사용할 수 있는지 테스트하세요.
android:icon
액티비티를 나타내는 아이콘입니다. 화면에 활동을 표시해야 하는 경우 아이콘이 사용자에게 표시됩니다. 예를 들어 작업을 시작하는 활동의 아이콘이 런처 창에 표시됩니다. 이 아이콘은 라벨이 함께 붙는 경우가 많습니다. 라벨에 대한 자세한 내용은
android:label
속성을 참고하세요.이 속성은 이미지 정의가 포함된 드로어블 리소스의 참조로 설정됩니다. 이 속성이 설정되지 않은 경우 전체 애플리케이션에 지정된 아이콘이 대신 사용됩니다. 자세한 내용은
<application>
요소의icon
속성을 참고하세요.활동의 아이콘은 여기에 설정되었는지 또는
<application>
요소에 의해 설정되었는지와 상관없이 활동의 모든 인텐트 필터의 기본 아이콘이기도 합니다. 자세한 내용은<intent-filter>
요소의icon
속성을 참고하세요.android:immersive
- 현재 활동의 몰입형 모드 설정을 지정합니다.
"true"
인 경우ActivityInfo.flags
멤버는 항상FLAG_IMMERSIVE
비트가 설정되어 있습니다. 몰입형 모드는setImmersive()
메서드를 사용하여 런타임에 변경됩니다. android:label
액티비티에 대해 사용자가 읽을 수 있는 레이블입니다. 라벨은 활동이 사용자에게 표시될 때 화면에 표시됩니다. 라벨은 종종 활동 아이콘과 함께 표시됩니다. 이 속성을 설정하지 않으면 애플리케이션 전체에 설정된 라벨이 대신 사용됩니다.
<application>
요소의label
속성활동의 라벨은 여기에 설정되었는지 또는
<application>
요소에 의해 설정되었는지와 상관없이 활동의 모든 인텐트 필터의 기본 라벨이기도 합니다. 자세한 내용은<intent-filter>
요소의label
속성을 참고하세요.라벨은 사용자 인터페이스의 다른 문자열처럼 현지화될 수 있도록 문자열 리소스의 참조로 설정합니다. 하지만 애플리케이션을 개발하는 동안 편의를 위해 라벨을 원시 문자열로 설정할 수도 있습니다.
android:launchMode
활동이 시작되는 방법에 관한 안내입니다. 다섯 가지 모드가 있습니다. 이는 활동 플래그 (
FLAG_ACTIVITY_*
상수)와 함께 작동합니다.Intent
객체에 전달하여 인텐트를 처리하기 위해 활동이 호출됩니다."standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
기본 모드는
"standard"
입니다.다음 표에 표시된 것처럼 모드는 두 가지 기본 그룹으로 분류되며 한 그룹에는
"standard"
및"singleTop"
활동이 있고 다른 그룹에는"singleTask"
,"singleInstance"
,"singleInstancePerTask"
활동이 있습니다."standard"
또는"singleTop"
시작 모드를 포함한 활동은 여러 번 인스턴스화할 수 있습니다.인스턴스는 아무 작업에나 속할 수 있으며 활동 작업의 아무 장소에나 위치할 수 있습니다. 일반적으로 인스턴스는
startActivity()
를 호출한 작업으로 시작됩니다. 단,Intent
객체가FLAG_ACTIVITY_NEW_TASK
명령을 포함하는 경우는 예외로 이때는 다른 작업이 선택됩니다. 자세한 내용은taskAffinity
속성을 참고하세요.반대로
"singleTask"
,"singleInstance"
,"singleInstancePerTask"
활동은 서로 다르게 동작합니다."singleInstancePerTask"
는 항상 활동 작업의 루트에 있습니다. 또한 기기는"singleInstance"
활동의 인스턴스를 한 번에 하나만 가질 수 있는 반면"singleInstancePerTask
활동은FLAG_ACTIVITY_MULTIPLE_TASK
또는FLAG_ACTIVITY_NEW_DOCUMENT
가 설정된 경우 다른 작업에서 여러 번 인스턴스화될 수 있습니다."singleTask"
시작 모드가 있는 활동은"singleInstance"
및"singleInstancePerTask"
의 동작을 결합합니다. 활동은 여러 번 인스턴스화될 수 있으며 동일한taskAffinity
작업의 어느 곳에나 위치할 수 있습니다. 하지만 기기는 활동 작업의 루트에서"singleTask"
활동을 찾는 작업 하나만 보유할 수 있습니다."standard"
모드와"singleTop"
모드는 한 가지 면에서 서로 다릅니다."standard"
활동에 관한 새로운 인텐트가 있을 때마다 클래스의 새 인스턴스가 생성되어 해당 인텐트에 응답합니다. 각 인스턴스는 단일 인텐트를 처리합니다. 마찬가지로"singleTop"
활동의 새 인스턴스도 만들어져 새 인텐트를 처리할 수 있습니다.그러나 타겟 작업의 스택 상단에 이미 활동의 기존 인스턴스가 있는 경우 해당 인스턴스는
onNewIntent()
호출에서 새 인텐트를 수신합니다. 새 인스턴스가 생성되지 않습니다."singleTop"
활동의 기존 인스턴스가 타겟 작업에는 있지만 스택 상단에는 없는 경우 또는 스택 상단에는 있지만 타겟 작업에는 없는 경우에는 새 인스턴스가 생성되고 스택에 푸시됩니다.마찬가지로 사용자가 현재 스택의 활동으로 위로 이동하면 동작은 상위 활동의 시작 모드로 결정됩니다. 상위 활동의 시작 모드가
singleTop
인 경우(또는up
인텐트가FLAG_ACTIVITY_CLEAR_TOP
을 포함하는 경우) 상위 활동은 스택 상단으로 이동하고 상태는 보존됩니다.상위 활동의
onNewIntent()
메서드가 탐색 인텐트를 수신합니다. 상위 활동의 시작 모드가standard
이고up
인텐트에FLAG_ACTIVITY_CLEAR_TOP
이 포함되어 있지 않은 경우 현재 활동과 그 상위 활동이 모두 스택에서 사라지고 상위 활동의 새 인스턴스가 생성되어 탐색 인텐트를 수신합니다."singleInstance"
모드도"singleTask"
및"singleInstancePerTask"
와 한 가지 측면에서만 다릅니다. 즉,"singleTask"
또는"singleInstancePerTask"
시작 모드가 있는 활동은 다른 활동("standard"
및"singleTop"
활동)이 작업의 일부가 되도록 허용합니다.반면
"singleInstance"
활동은 다른 활동이 작업의 일부가 되도록 허용하지 않습니다. 작업의 유일한 활동이어야 합니다. 다른 활동을 시작하면 그 활동은FLAG_ACTIVITY_NEW_TASK
가 인텐트에 있던 것처럼 다른 작업에 할당됩니다.사용 사례 시작 모드 다중 인스턴스? 참고 대다수 활동의 일반적인 시작 "standard"
예 기본값입니다. 시스템은 항상 타겟 작업에 새 활동 인스턴스를 생성하여 인텐트를 인스턴스로 라우팅합니다. "singleTop"
조건부 활동의 인스턴스가 이미 타겟 작업의 맨 위에 존재하는 경우 시스템은 새 활동 인스턴스를 생성하는 대신 onNewIntent()
메서드를 호출하여 인텐트를 기존 인스턴스로 라우팅합니다.특수한 시작
(일반 용도에는 권장되지 않음)"singleTask"
조건부 시스템은 새 작업의 루트에서 활동을 만들거나 같은 어피니티를 사용하여 기존 작업에서 활동을 찾습니다. 활동의 인스턴스가 이미 존재하고 작업의 루트에 있으면 시스템은 새 메서드를 만드는 대신 onNewIntent()
메서드를 호출하여 인텐트를 기존 인스턴스로 라우팅합니다."singleInstance"
아니요 "singleTask"
와 동일하지만 시스템이 인스턴스를 보유한 작업으로는 어떤 다른 활동도 실행하지 않는다는 점이 다릅니다. 활동은 항상 작업의 유일한 단일 멤버입니다."singleInstancePerTask"
조건부 이 활동은 작업의 루트 활동, 즉 작업을 만든 첫 번째 활동으로만 실행될 수 있으므로 작업에는 이 활동의 인스턴스가 하나만 있습니다. 그러나 활동은 서로 다른 작업에서 여러 번 인스턴스화될 수 있습니다. 위 표와 같이
"standard"
는 기본 모드이며 대부분의 활동 유형에 적합합니다."singleTop"
도 여러 활동 유형에 유용한 일반적인 시작 모드입니다. 다른 모드인"singleTask"
,"singleInstance"
,"singleInstancePerTask"
는 대부분의 애플리케이션에 적합하지 않습니다. 사용자에게 친숙하지 않고 대부분의 다른 애플리케이션과 매우 다른 상호작용 모델을 사용하기 때문입니다.선택한 시작 모드와 상관없이 사용성을 테스트해야 합니다. 액티비티로 다시 이동할 때 다른 활동과 작업을 할 수 있습니다.
시작 모드 및
Intent
플래그와의 상호작용에 관한 자세한 내용은 작업 및 백 스택을 참고하세요.android:lockTaskMode
- 기기가 작업 잠금 모드에서 실행 중일 때 시스템이 이 활동을 표시하는 방법을 결정합니다.
Android는 일명 작업 잠금 모드라는 몰입형, 키오스크와 유사한 방식으로 작업을 실행할 수 있습니다. 시스템에서 작업 잠금 모드에서 실행되거나, 기기 사용자는 일반적으로 알림을 볼 수 없고, 허용 목록에 없는 앱에 액세스할 수 없으며, 또는 홈 화면으로 돌아갈 수 없습니다.
시스템이 작업 잠금 모드일 때는 기기 정책 컨트롤러(DPC)가 허용 목록으로 등록한 앱만 실행할 수 있습니다. 그러나 시스템과 권한이 있는 앱은 허용 목록에 등록되지 않아도 작업 잠금 모드에서 실행할 수 있습니다.
이 값은 다음
R.attr.lockTaskMode
문자열 값 중 하나가 됩니다.값 설명 "normal"
기본값. 기본값입니다. 작업이 작업 잠금 모드에서 시작되지 않지만 startLockTask()
를 호출하면 들어갈 수 있습니다."never"
작업은
lockTask
모드로 시작되지 않으며 기기 사용자는 최근 화면에 이러한 작업을 고정할 수 없습니다.참고: 이 모드는 시스템 및 권한이 있는 애플리케이션에서만 사용할 수 있습니다. 이 값이 있지만 권한이 없는 앱은
normal
로 간주합니다."if_whitelisted"
DPC가 DevicePolicyManager.setLockTaskPackages()
를 사용하여 이 패키지를 승인하면 이 모드가always
와 동일해집니다. 다만 활동이 마지막으로 잠긴 작업인 경우stopLockTask()
를 호출해야 종료할 수 있게 됩니다. DPC가 이 패키지를 승인하지 않으면 이 모드는normal
과 동일합니다."always"
이 활동에 루팅된 작업은 언제나 작업 잠금 모드로 시작됩니다. 이 작업이 시작되었을 때 시스템이 이미 작업 잠금 모드인 경우 새 작업은 현재 작업 위에서 시작됩니다. 이 모드로 시작된 작업은
finish()
를 호출하여 작업 잠금 모드를 종료할 수 있습니다.참고: 이 모드는 시스템 및 권한이 있는 애플리케이션에서만 사용할 수 있습니다. 이 값이 있지만 권한이 없는 앱은
normal
로 간주합니다.이 속성은 API 수준 23에서 도입되었습니다.
android:maxRecents
- 최근 화면에서 이 활동에 루팅된 작업의 최대 개수입니다. 이 항목 개수에 도달하면 시스템이 가장 오래전에 사용한 인스턴스를 최근 화면에서 제거합니다. 유효한 값은 1~50 사이의 정수 또는 메모리 용량이 낮은 기기의 경우 1~25 사이의 정수입니다. 0은 유효하지 않습니다. 기본값은 16입니다.
android:maxAspectRatio
활동이 지원하는 최대 가로세로 비율입니다. 앱이 더 넓은 가로세로 비율을 가진 기기에서 작동하는 경우 시스템에서는 앱을 자동으로 레터박스 처리하여 화면 중 일부를 미사용 상태로 두고 앱이 지정된 최대 가로세로 비율에서 작동할 수 있게 합니다.
최대 가로세로 비율은 기기의 긴 길이를 짧은 길이로 나눈 몫을 소수점 형식으로 표현합니다. 예를 들어 최대 가로세로 비율이 7:3이라면 이 속성의 값은 2.33으로 설정합니다.
웨어러블 기기가 아닌 경우 이 속성 값은 1.33 이상이어야 합니다. 웨어러블 기기의 경우 1.0 이상이어야 합니다. 그렇지 않으면 시스템은 설정값을 무시합니다.
참고: 활동의
resizeableActivity
가 true로 설정되어 있으면 활동이 모든 크기를 지원한다는 것을 의미하므로 이 속성은 무시됩니다.이 속성에 관한 자세한 내용은 최대 가로세로 비율 선언을 참고하세요.
android:multiprocess
- 활동 인스턴스가 활동을 시작한 구성요소의 프로세스로 시작될 수 있는지를 나타냅니다. 시작될 수 있으면
"true"
, 없으면"false"
입니다. 기본값은"false"
입니다.일반적으로 새 활동 인스턴스는 이를 정의한 애플리케이션의 프로세스로 시작되므로 모든 활동 인스턴스가 동일한 프로세스에서 실행됩니다. 그러나 이 플래그를
"true"
로 설정하는 경우 활동 인스턴스는 다중 프로세스에서 실행될 수 있으며 시스템이 사용되는 곳과 상관없이 인스턴스를 생성할 수 있습니다(권한이 있는 경우). 이는 거의 필요하지 않거나 바람직하지 않습니다. android:name
- 활동을 구현하는 클래스(
Activity
의 서브클래스)의 이름입니다. 속성 값은 일반적으로 정규화된 클래스 이름(예:"com.example.project.ExtracurricularActivity"
)입니다. 그러나 약식으로 이름의 첫 번째 문자가 마침표인 경우(예:".ExtracurricularActivity"
)build.gradle
파일에서 지정된 네임스페이스에 추가됩니다.애플리케이션을 게시한 후에는
android:exported="false"
를 설정하지 않는 한 이 이름을 변경하지 마세요. 기본값은 없으며, 이름을 지정해야 합니다. android:noHistory
- 사용자가 활동에서 벗어나 더 이상 화면에 활동이 표시되지 않는 경우
finish()
메서드를 호출하여 활동이 활동 스택에서 삭제되고 종료되는지를 나타냅니다. 종료되면"true"
, 종료되지 않으면"false"
입니다. 기본값은"false"
입니다.값이
"true"
이면 활동이 이전 트레이스를 남기지 않습니다. 활동은 작업의 활동 스택에 머무르지 않으므로 사용자는 돌아갈 수 없습니다. 이 경우 이 활동의 결과에 관한 다른 활동을 시작하면onActivityResult()
가 호출되지 않습니다.이 속성은 API 수준 3에서 도입되었습니다.
android:parentActivityName
- 활동의 논리적 상위 활동의 클래스 이름입니다. 이 이름은 상응하는
<activity>
요소의android:name
속성에 주어진 클래스 이름과 일치해야 합니다.시스템은 이 속성을 읽고 사용자가 작업 모음에서 위로 버튼을 탭할 때 시작할 활동을 결정합니다. 또한 시스템은 이 정보를 사용하여 활동의 백 스택을
TaskStackBuilder
와 합성할 수 있습니다.API 수준 4~16을 지원하도록
"android.support.PARENT_ACTIVITY"
값을 지정하는<meta-data>
요소를 사용하여 상위 활동을 선언할 수도 있습니다.<activity android:name="com.example.app.ChildActivity" android:label="@string/title_child_activity" android:parentActivityName="com.example.app.MainActivity" > <!-- Parent activity meta-data to support API level 4+ --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.app.MainActivity" /> </activity>
위로 탐색을 지원하는 상위 활동 선언에 관한 자세한 내용은 위로 탐색 제공을 참고하세요.
이 속성은 API 수준 16에서 도입되었습니다.
android:persistableMode
기기를 다시 시작할 때 포함 작업 내에 활동의 인스턴스를 어떤 식으로 보존할지 정의합니다.
작업의 루트 활동이 이 속성 값을
persistRootOnly
로 설정하면 루트 활동만 보존됩니다. 그 외 경우에는 작업의 백 스택 위쪽에 있는 활동을 탐색합니다. 이 속성 값을persistAcrossReboots
로 설정한 활동은 모두 보존됩니다.이 속성을 사용하면 다음 중 하나로 값을 설정해야 합니다.
값 설명 persistRootOnly
기본값. 시스템이 다시 시작되면 활동 작업이 보존되지만 루트 활동의 시작 인텐트만 사용됩니다.
앱의 시작 인텐트가 앱의 루트 활동을 로드할 때 활동이
PersistableBundle
객체를 수신하지 않습니다. 그러므로 기기를 다시 시작할 때 앱의 루트 활동 상태를 보존하기 위해onSaveInstanceState()
를 사용하지 마세요.참고: 이 속성 값은 앱의 루트 활동에 설정된 경우에만 앱 동작에 영향을 미칩니다.
persistAcrossReboots
이 활동의 상태가 보존되며 이와 함께 자체적인
persistableMode
속성을persistAcrossReboots
로 설정한 백 스택 위쪽의 각 활동 상태도 보존됩니다. 활동에persistAcrossReboots
로 설정된persistableMode
속성이 없는 경우 또는Intent.FLAG_ACTIVITY_NEW_DOCUMENT
플래그를 사용하여 시작하는 경우 활동 및 백 스택 위의 모든 활동은 보존되지 않습니다.인텐트가 앱에서
persistableMode
속성이persistAcrossReboots
로 설정된 활동을 로드하면 활동이onCreate()
메서드에PersistableBundle
객체를 수신합니다. 그러므로onSaveInstanceState()
를 사용하여 기기가 다시 시작할 때 활동의 상태를 보존할 수 있습니다. 단,persistableMode
속성이persistAcrossReboots
로 설정되어야 합니다.참고: 이 속성 값은 앱의 루트 활동 이외의 활동에 설정된 경우에도 앱 동작에 영향을 미칩니다.
persistNever
활동의 상태가 보존되지 않습니다.
참고: 이 속성 값은 앱의 루트 활동에 설정된 경우에만 앱 동작에 영향을 미칩니다.
이 속성은 API 수준 21에서 도입되었습니다.
android:permission
- 클라이언트가 활동을 시작하거나 인텐트에 응답하는 데 필요한 권한의 이름입니다.
startActivity()
또는startActivityForResult()
호출자가 지정된 권한을 부여받지 못하면 인텐트가 활동에 전달되지 않습니다.이 속성을 설정하지 않으면
<application>
요소의permission
속성으로 설정된 권한이 활동에 적용됩니다. 둘 중 어느 속성도 설정하지 않은 경우 활동이 권한으로 보호되지 않습니다. android:process
활동이 실행되는 프로세스의 이름입니다. 일반적으로 애플리케이션의 모든 구성요소는 애플리케이션용으로 생성된 기본 프로세스 이름으로 실행되므로 이 속성을 사용할 필요가 없습니다. 그러나 필요한 경우 이 속성을 사용하여 기본 프로세스 이름을 재정의할 수 있으며 앱 구성요소를 다중 프로세스에 분배할 수 있습니다.
이 속성에 할당된 이름이 콜론(
:
)으로 시작되면 필요에 따라 애플리케이션 전용의 새 프로세스가 만들어지고 이 프로세스에서 활동이 실행됩니다.프로세스 이름이 소문자로 시작되면 활동은 이 이름의 전역 프로세스에서 실행됩니다(권한이 있는 경우). 이를 통해, 서로 다른 애플리케이션의 구성요소가 한 프로세스를 공유하여 리소스 사용량을 줄일 수 있습니다.
<application>
요소의process
속성은 모든 구성요소에 서로 다른 기본 프로세스 이름을 설정할 수 있습니다.android:relinquishTaskIdentity
활동이 할 수 있습니다. 이 속성을
"true"
로 설정한 루트 활동이 있는 작업은 기본 활동을 대체합니다. 작업의 다음 활동의Intent
로 대체합니다.다음 활동도 이 속성을
"true"
로 설정하면 동일한 작업에서 시작되는 모든 활동에 기본Intent
를 양도합니다. 이는 이 속성이"false"
로 설정된 활동이 발생할 때까지 각 활동에 계속 적용됩니다. 기본값은"false"
입니다.이 속성을
"true"
로 설정하면 활동에서ActivityManager.TaskDescription
을 사용하여 최근 화면의 라벨, 색상, 아이콘을 변경할 수도 있습니다.android:requireContentUriPermissionFromCaller
-
전달할 때 이 활동을 시작하는 데 필요한 권한을 지정합니다. 콘텐츠 URI입니다. 기본값은
none
이며, 이는 구체적인 권한이 필요합니다 이 속성을 설정하면 활동이 제한됩니다. 호출을 할 수 있습니다. 호출자가 필요한 권한이 없으면SecurityException
를 통해 활동 시작이 거부됩니다.이 적용은 요청 내부의 콘텐츠 URI에
Intent.getData()
님,Intent.EXTRA_STREAM
, 및Intent.getClipData()
:문자열 값일 수 있으며 '\\;'를 사용합니다. '\\n'와 같은 문자를 이스케이프 처리합니다. 또는 '\\uxxxx' 유니코드 문자의 경우
다음 상숫값 중 하나여야 합니다.
상수 값 설명 없음 0 기본적으로 특정 권한이 필요하지 않습니다. 읽기 1 호출자가 전달된 콘텐츠 URI에 대한 읽기 액세스 권한을 갖도록 적용합니다. ReadAndWrite 4 호출자가 전달된 콘텐츠 URI에 대한 읽기 및 쓰기 액세스 권한을 모두 갖도록 적용합니다. readOrWrite 3 호출자가 전달된 콘텐츠 URI에 대한 읽기 또는 쓰기 액세스 권한을 갖도록 적용합니다. 쓰기 2 호출자가 전달된 콘텐츠 URI에 대한 쓰기 액세스 권한을 갖도록 적용합니다. android:resizeableActivity
-
앱이 멀티 윈도우 모드를 지원하는지 여부를 지정합니다. 이 속성은
<activity>
요소나<application>
요소에서 설정할 수 있습니다.이 속성을
"true"
로 설정하면 사용자가 화면 분할 모드와 자유 형식 모드로 활동을 시작할 수 있고, 속성을"false"
로 설정하면 앱을 멀티 윈도우 환경에 맞게 테스트하거나 최적화할 수 없습니다. 시스템은 여전히 호환성 모드가 적용된 상태로 활동을 멀티 윈도우 모드에 둘 수 있습니다.이 속성을
"false"
로 설정해도 멀티 윈도우 모드의 다른 앱이 화면(예: PIP 모드)이나 다른 디스플레이에 표시되지 않는다는 보장도 없습니다. 따라서 이 플래그를 설정한다고 해서 앱에 독점적인 리소스 액세스 권한이 있는 것은 아닙니다.앱이 API 수준 24 이상을 타겟팅하지만 이 속성 값을 지정하지 않은 경우 이 속성의 기본값은
"true"
가 됩니다.앱이 API 수준 31 이상을 타겟팅하는 경우 이 속성은 작은 화면 및 큰 화면에서 다르게 작동합니다.
- 큰 화면(sw >= 600dp): 모든 앱이 멀티 윈도우 모드를 지원합니다. 이 속성은 앱의 크기를 조절할 수 있는지를 나타냅니다(앱이 멀티 윈도우 모드를 지원하는지가 아님).
resizeableActivity="false"
인 경우 디스플레이 크기를 준수하기 위해 필요한 경우 앱이 호환성 모드로 전환됩니다. - 작은 화면(sw < 600dp):
resizeableActivity="true"
및 활동의 최소 너비와 최소 높이가 멀티 윈도우 요구사항 내에 있다면 앱은 멀티 윈도우 모드를 지원합니다.resizeableActivity="false"
인 경우 앱은 활동 최소 너비 및 높이와 상관없이 멀티 윈도우 모드를 지원하지 않습니다.
참고: 기기 제조업체는 API 수준 31 동작을 재정의할 수 있습니다.
이 속성은 API 수준 24에 추가되었습니다.
참고: 작업의 루트 활동 값은 작업에서 시작된 모든 추가 활동에 적용됩니다. 즉, 작업의 루트 활동의 크기를 조절할 수 있으면 시스템은 작업의 다른 모든 활동의 크기를 조절할 수 있다고 간주합니다. 루트 활동의 크기를 조절할 수 없으면 작업의 다른 활동의 크기를 조절할 수 없습니다.
- 큰 화면(sw >= 600dp): 모든 앱이 멀티 윈도우 모드를 지원합니다. 이 속성은 앱의 크기를 조절할 수 있는지를 나타냅니다(앱이 멀티 윈도우 모드를 지원하는지가 아님).
android:screenOrientation
요청된 활동 방향입니다.
활동이 전체 화면을 채울 때 요청된 방향은 요청된 값과 일치하도록 화면의 방향을 변경합니다. 이로 인해 화면 방향이 물리적인 공간 방향과 다르기 때문에 사용자가 기기를 회전시켜 앱을 계속 사용할 수 있습니다. Android 12 (API 수준) 31) 이상인 경우 기기 제조업체는 개별 기기를 구성할 수 있습니다. 화면 (예: 폴더블의 태블릿 크기 화면)에서 이 제안을 무시하고 대신 사용자가 원하는 기기 방향 내에서 활동이 레터박스 처리되도록 강제합니다. 이 액티비티의 방향이 요청된 방향과 일치하게 하는데, 이때 사용자가 기기를 물리적으로 회전시켜야 합니다.
멀티 윈도우 모드에서 요청된 방향은 전체적으로 방향을 설정할 수 있습니다. 활동이 다음에 해당하는 경우 letterboxed를 반환하여 요청된 활동에 적용되는 레터박스에 영향을 줍니다.
이 값은 다음 문자열 중 하나일 수 있습니다.
"unspecified"
기본값입니다. 시스템이 방향을 선택합니다. 시스템이 사용하는 정책과 특정 컨텍스트에서 이루어지는 선택은 기기마다 다를 수 있습니다. "behind"
활동 스택에서 바로 아래에 있는 활동과 동일한 방향입니다. "landscape"
가로 모드 방향입니다(디스플레이의 높이보다 너비가 더 긺). "portrait"
세로 모드 방향입니다(디스플레이의 너비보다 높이가 더 긺). "reverseLandscape"
정상적인 가로 모드 방향에서 반대 방향인 가로 모드 방향입니다. API 수준 9에 추가되었습니다. "reversePortrait"
정상적인 세로 모드 방향에서 반대 방향인 세로 모드 방향입니다. API 수준 9에 추가되었습니다. "sensorLandscape"
기기 센서에 따라 정상적인 가로 모드 방향 또는 반전된 가로 모드 방향이 될 수 있습니다. 사용자가 센서 기반 회전을 잠갔더라도 센서가 사용됩니다. API 수준 9에 추가되었습니다. "sensorPortrait"
기기 센서에 따라 정상적인 세로 모드 방향 또는 반전된 세로 모드 방향이 될 수 있습니다. 사용자가 센서 기반 회전을 잠갔더라도 센서가 사용됩니다. 그러나 기기 설정에 따라 180도 회전이 허용되지 않을 수 있습니다. API 수준 9에 추가되었습니다. "userLandscape"
기기 센서 및 사용자의 기본 설정에 따라 정상적인 가로 모드 방향 또는 반전된 가로 모드 방향이 될 수 있습니다. API 수준 18에 추가되었습니다. "userPortrait"
기기 센서 및 사용자의 기본 설정에 따라 정상적인 세로 모드 방향 또는 반전된 세로 모드 방향이 될 수 있습니다. 그러나 기기 설정에 따라 180도 회전이 허용되지 않을 수 있습니다. API 수준 18에 추가되었습니다. "sensor"
기기 방향 센서가 방향을 결정합니다. 디스플레이 방향은 사용자가 기기를 잡고 있는 방법에 따라 다릅니다. 사용자가 기기를 회전하면 변경됩니다. 그러나 일부 기기는 기본적으로 모든 4개 방향으로 회전하지 않습니다. 4개 방향을 모두 사용하려면 "fullSensor"
를 사용합니다. 사용자가 센서 기반 회전을 잠갔더라도 센서가 사용됩니다."fullSensor"
기기 방향 센서는 4개 방향 중에서 방향을 결정합니다. 이는 "sensor"
와 유사하지만 일반적으로 기기에서 지원하는 방향과 관계없이 가능한 4가지 화면 방향 중 어느 것이나 허용한다는 점은 다릅니다. 예를 들어 일부 기기에서는 일반적으로 세로 모드 반전 또는 가로 모드 반전을 사용하지 않지만 이 값은 이러한 방향을 사용 설정합니다. API 수준 9에 추가되었습니다."nosensor"
물리적 방향 센서를 참조하지 않고 방향을 결정합니다. 센서가 무시되므로 사용자가 기기를 이동하는 방법에 따라 디스플레이가 회전하지 않습니다. "user"
사용자의 현재 기본 설정 방향입니다. "fullUser"
사용자가 센서 기반 회전을 잠금 설정한 경우 user
와 동일하게 작동하고 잠금 설정을 하지 않은 경우fullSensor
와 동일하게 작동하며 화면 방향을 4개 모두 허용합니다. API 수준 18에 추가되었습니다."locked"
현재 회전 방향이 무엇이든 그 방향으로 잠금 설정합니다. API 수준 18에 추가되었습니다. 참고: 가로 모드 값이나 세로 모드 값 중 하나를 선언할 때 이는 활동이 실행되는 방향에 관한 어려운 요구사항으로 간주됩니다. 선언한 값은 애플리케이션이 활동에 필요한 방향을 지원하는 기기에만 사용 가능하도록 Google Play와 같은 서비스가 제공하는 필터링을 사용 설정합니다. 예를 들어
"landscape"
나"reverseLandscape"
,"sensorLandscape"
를 선언하는 경우 애플리케이션이 가로 모드 방향을 지원하는 기기에서만 사용 가능합니다.또한
<uses-feature>
요소(예:<uses-feature android:name="android.hardware.screen.portrait"/>
)를 사용하여 애플리케이션에 세로 모드 또는 가로 모드 방향이 필요하다고 명시적으로 선언합니다. 이는 Google Play와 이를 지원하는 다른 서비스에서 제공하는 필터링 동작이며 플랫폼 자체는 기기가 특정 방향만 지원할 때 앱 설치 여부를 제어하지 않습니다.android:showForAllUsers
-
기기의 현재 사용자가 활동을 시작한 사용자와 다를 경우 활동을 표시할지를 나타냅니다. 이 속성을 리터럴 값(
"true"
또는"false"
)으로 설정해도 되고 불리언 값이 포함된 리소스 또는 테마 속성으로 설정해도 됩니다.이 속성은 API 수준 23에 추가되었습니다.
android:stateNotNeeded
- 상태를 저장하지 않고 활동을 종료하고 성공적으로 다시 시작할 수 있는지를 나타냅니다. 이전 상태 참조 없이 다시 시작할 수 있는 경우에는
"true"
이고 이전 상태가 필요하면"false"
입니다. 기본값은"false"
입니다.일반적으로 리소스를 저장하기 위해 활동을 일시적으로 종료하기 전에
onSaveInstanceState()
메서드를 호출합니다. 이 메서드는Bundle
객체에 활동의 현재 상태를 저장하며 이 상태는 활동이 다시 시작할 때onCreate()
로 전달됩니다. 이 속성을"true"
로 설정하면onSaveInstanceState()
가 호출되지 않을 수 있으며onCreate()
에 활동이 처음 시작될 때처럼Bundle
대신null
이 전달됩니다."true"
설정은 유지된 상태 없이 활동을 다시 시작할 수 있음을 의미합니다. 예를 들어 홈 화면을 표시하는 활동은 어떤 이유로든 비정상 종료되는 경우 삭제되지 않도록 이 설정을 사용합니다. android:supportsPictureInPicture
-
활동이 PIP 모드 표시를 지원하는지를 지정합니다.
android:taskAffinity
액티비티는 상하 관계가 있는 작업입니다. 어피니티가 같은 활동은 개념적으로 같은 작업(사용자 관점에서 같은 '애플리케이션')에 속합니다. 작업의 어피니티는 루트 활동의 어피니티가 결정합니다.
어피니티는 두 가지를 결정합니다. 하나는 활동이 상위 요소로 재지정된 작업(
allowTaskReparenting
속성 참고)이고 하나는FLAG_ACTIVITY_NEW_TASK
플래그로 시작될 때 활동을 수용하는 작업입니다.기본적으로 애플리케이션 내 모든 활동의 어피니티는 같습니다. 활동을 서로 다르게 그룹화하도록 이 속성을 설정할 수 있으며 서로 다른 애플리케이션에 정의된 활동을 같은 작업 안에 둘 수도 있습니다. 활동에 작업의 어피니티가 없음을 지정하려면 빈 문자열로 설정하세요.
이 속성을 설정하지 않으면 활동이 애플리케이션에 설정된 어피니티를 상속받습니다.
<application>
요소의taskAffinity
속성을 참고하세요. 애플리케이션의 기본 어피니티 이름은build.gradle
파일에 설정된 네임스페이스입니다.android:theme
- 활동의 전체 테마를 정의하는 스타일 리소스 참조입니다.
이는 이
theme
을 사용하도록 활동 컨텍스트를 자동으로 설정하며 활동의 실제 모양과 더 잘 일치하도록 활동이 시작하기 전에 애니메이션을 '시작'하게 할 수도 있습니다.이 속성을 설정하지 않으면 활동은 전체 애플리케이션에 설정된 테마를
<application>
요소의theme
속성에서 상속받습니다. 또한 이 속성을 설정하지 않으면 기본 시스템 테마가 사용됩니다. 자세한 내용은 스타일 및 테마를 참고하세요. android:uiOptions
활동 UI의 추가 옵션입니다. 다음 값 중 하나여야 합니다.
값 설명 "none"
추가 UI 옵션이 없습니다. 이는 기본값입니다. "splitActionBarWhenNarrow"
가로 공간이 제한적일 때(예: 핸드셋에서 인물 사진 모드 사용) 화면 하단에 표시줄을 추가하여 앱 바(작업 모음이라고도 함)에 작업 항목을 표시합니다. 화면 상단의 앱 바에 소수의 작업 항목이 표시되는 방식 대신, 상단의 탐색 섹션과 하단의 작업 항목 표시줄로 앱 바가 나뉘게 됩니다. 이렇게 하면 작업 항목뿐 아니라 상단의 탐색 및 제목 요소에도 적정한 공간이 제공됩니다. 메뉴 항목은 두 막대 간에 분할되지 않습니다. 항상 함께 표시됩니다. 앱 바에 관한 자세한 내용은 앱 바 추가를 참고하세요.
이 속성은 API 수준 14에 추가되었습니다.
android:windowSoftInputMode
- 활동의 기본 창이 터치형 소프트 키보드를 포함하는 창과 상호작용하는 방법을 나타냅니다. 이 속성 설정은 다음 두 가지에 영향을 미칩니다.
- 활동에 사용자의 관심이 집중될 때 소프트 키보드를 숨기거나 표시할지 여부
- 소프트 키보드의 공간을 확보하도록 활동의 기본 창 크기를 더 작게 조절할지, 창의 일부가 소프트 키보드로 인해 가려질 때 현재 포커스가 표시되도록 콘텐츠를 이동할지 여부
설정은 다음 표에 나열된 값 중 하나이거나
"state..."
값 하나와"adjust..."
값 하나를 조합한 것이어야 합니다. 한 그룹에 여러 값(예: 여러"state..."
값)을 설정하면 정의되지 않은 결과가 발생합니다. 개별 값은 다음 예와 같이 세로 막대(|
)로 구분됩니다.<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
여기에 설정된 값(
"stateUnspecified"
,"adjustUnspecified"
제외)은 테마에 설정된 값을 재정의합니다.값 설명 "stateUnspecified"
소프트 키보드의 숨김 또는 표시 여부를 지정하지 않습니다. 시스템에서 적절한 상태를 선택하거나 테마의 설정을 사용합니다. 이는 소프트 키보드 동작의 기본 설정입니다.
"stateUnchanged"
활동이 앞으로 나올 때 소프트 키보드가 마지막으로 사용된 상태(숨김 또는 표시)를 유지합니다. "stateHidden"
소프트 키보드는 사용자가 활동을 선택할 때, 즉 사용자가 다른 활동을 떠나서 활동으로 다시 돌아오기보다는 활동으로 적극적으로 이동할 때 숨겨집니다. "stateAlwaysHidden"
활동의 기본 창에 입력 포커스가 있는 경우 소프트 키보드가 항상 숨겨집니다. "stateVisible"
소프트 키보드는 사용자가 활동을 선택할 때, 즉 사용자가 다른 활동을 떠나서 활동으로 다시 돌아오기보다는 활동으로 적극적으로 이동할 때 표시됩니다. "stateAlwaysVisible"
창이 입력 포커스를 받으면 소프트 키보드가 표시됩니다. "adjustUnspecified"
소프트 키보드를 위한 공간을 확보하기 위해 활동의 기본 창 크기를 조절하거나 현재 포커스가 화면에 표시되도록 창의 콘텐츠를 이동할지 여부를 지정하지 않습니다. 창의 콘텐츠가 콘텐츠를 스크롤할 수 있는 레이아웃 뷰를 가지고 있는지 여부에 따라 시스템이 이러한 모드 중 하나를 자동으로 선택합니다. 이러한 뷰가 있는 경우 스크롤이 모든 창의 콘텐츠를 더 작은 공간에 표시할 수 있다는 가정하에 창의 크기가 조절됩니다. 이는 기본 창 동작의 기본 설정입니다.
"adjustResize"
화면에서 소프트 키보드를 위한 공간을 확보하도록 활동의 기본 창 크기를 항상 조절합니다. "adjustPan"
소프트 키보드를 위한 공간을 확보하도록 활동의 기본 창 크기를 조절하지 않습니다. 대신 키보드가 현재 포커스를 가리지 않고 사용자가 입력하는 것을 항상 볼 수 있도록 창의 콘텐츠가 자동으로 이동합니다. 이는 일반적으로 창의 크기를 조절하는 것보다 바람직하지 않습니다. 사용자가 소프트 키보드를 닫고 창의 가려진 부분에 가서 상호작용해야 할 수도 있기 때문입니다. 이 속성은 API 수준 3에서 도입되었습니다.
- 도입 수준:
- API 수준 3에 추가된
noHistory
및windowSoftInputMode
를 제외한 모든 속성의 경우 API 수준 1 - 참고 항목:
<application>
<activity-alias>
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-08-22(UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"필요한 정보가 없음"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"너무 복잡함/단계 수가 너무 많음"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"오래됨"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"번역 문제"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"샘플/코드 문제"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"기타"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"이해하기 쉬움"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"문제가 해결됨"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"기타"
}]
{
"lastModified": "최종 업데이트: 2024-08-22(UTC)",
"confidential": False
}