<деятельность>

синтаксис:
<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" , если он остается на той задаче, с которой начал.

Если этот атрибут не установлен, к действию применяется значение, установленное соответствующим allowTaskReparenting элемента <application> . Значение по умолчанию "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" . Баннера по умолчанию нет.

Дополнительную информацию см. в разделе «Предоставление баннера на главном экране» в разделе «Начало работы с ТВ-приложениями».

android:canDisplayOnRemoteDevices

Указывает, может ли действие отображаться на удаленном устройстве, которое может работать под управлением Android или нет. Это должно быть логическое значение: "true" или "false" .

Значением этого атрибута по умолчанию является "true" .

android:clearTaskOnLaunch
Будут ли удалены все действия из задачи, за исключением корневой активности, при ее повторном запуске с главного экрана. "true" если задача всегда сводится к ее корневому действию, и "false" если нет. Значение по умолчанию "false" . Этот атрибут имеет смысл только для действий, запускающих новую задачу — корневую операцию. Он игнорируется для всех остальных действий в задаче.

Если значение равно "true" , каждый раз, когда пользователи запускают задачу, они переходят к ее корневому действию независимо от того, что они в последний раз делали в задаче и независимо от того, использовали ли они кнопку «Назад» или «Домой», чтобы выйти из нее. Если значение равно "false" , в некоторых ситуациях задачу можно очистить от действий, но не всегда. Дополнительные сведения см. в атрибуте alwaysRetainTaskState .

Предположим, пользователь запускает действие P с главного экрана и оттуда переходит к действию Q. Затем пользователь нажимает «Домой», а затем возвращается к действию P. Обычно пользователь видит действие Q, поскольку это то, что он в последний раз делал в P. задача. Однако если P установит для этого флага значение "true" , все действия поверх него — в данном случае Q — удаляются, когда пользователь запускает действие P с главного экрана. Итак, пользователь видит только P при возвращении к задаче.

Если этот атрибут и allowTaskReparenting оба имеют "true" , любые действия, которые могут быть повторно родительскими, перемещаются в задачу, с которой они имеют сходство. Остальные действия затем отбрасываются.

Этот атрибут игнорируется, если FLAG_ACTIVITY_RESET_TASK_IF_NEEDED не установлен.

android:colorMode

Указывает цветовой режим действия. Если указано, это может быть hdr или wideColorGamut .

Если hdr , запрашивает отображение активности в широком динамическом диапазоне, если устройство поддерживает это.

Если wideColorGamut запрашивает отображение активности в режиме широкой цветовой гаммы на совместимых устройствах. В режиме широкой цветовой гаммы окно может отображаться за пределами гаммы SRGB , чтобы отображать более яркие цвета. Если устройство не поддерживает рендеринг широкой цветовой гаммы, этот атрибут не имеет никакого эффекта. Дополнительные сведения о рендеринге в широкоцветном режиме см. в разделе Улучшение графики с помощью широкоцветного содержимого .

android:configChanges
Перечисляет изменения конфигурации, которые действие обрабатывает самостоятельно. Когда изменение конфигурации происходит во время выполнения, действие завершается и перезапускается по умолчанию, но объявление конфигурации с этим атрибутом предотвращает перезапуск действия. Вместо этого действие продолжает выполняться, и вызывается его метод onConfigurationChanged() .

Примечание. Используйте этот атрибут только в особых случаях, чтобы улучшить производительность и скорость реагирования приложения. Дополнительные сведения см. в разделе Обработка изменений конфигурации .

Следующие строки являются допустимыми значениями для этого атрибута. Несколько значений разделяются | , например "locale|navigation|orientation" .

Ценить Описание
"colorMode"

Изменились возможности цветового режима экрана (цветовой охват или динамический диапазон).

Примечание. Цветовой режим, который действие запрашивает с помощью атрибута colorMode или во время выполнения, отличается от возможности использования различных цветовых режимов. Действие по изменению используемого цветового режима не приводит к изменению конфигурации, поскольку цветовые возможности дисплея не изменились.

"density"

Изменение плотности отображения, например, когда пользователь указывает другой масштаб отображения или другой дисплей, теперь активно.

Добавлено на уровне API 24 .

"fontScale" Изменение коэффициента масштабирования шрифта, например, когда пользователь выбирает новый глобальный размер шрифта.
"fontWeightAdjustment" Изменилась величина увеличения толщины шрифта.
"grammaticalGender" Изменился грамматический род языка. См. GrammaticalInflectionManager .

Добавлено на уровне API 34 .

"keyboard" Изменение типа клавиатуры, например, когда пользователь подключает внешнюю клавиатуру.
"keyboardHidden" Изменение доступности клавиатуры, например, когда пользователь открывает аппаратную клавиатуру.
"layoutDirection"

Изменение направления макета, например с слева направо (LTR) на справа налево (RTL).

Добавлено на уровне API 17 .

"locale" Изменение языкового стандарта, например, когда пользователь выбирает новый язык для отображения текста.
"mcc" Изменение мобильного кода страны (MCC) IMSI при обнаружении SIM-карты, которая обновляет MCC.
"mnc" Изменение кода мобильной сети IMSI (MNC) при обнаружении SIM-карты, которая обновляет MNC.
"navigation" ТА смена типа навигации (трекбол или D-pad). Обычно этого не происходит.
"orientation"

Изменение ориентации экрана, например, когда пользователь поворачивает устройство.

Примечание. Если ваше приложение предназначено для Android 3.2 (уровень API 13) или более поздней версии, также объявите конфигурации "screenLayout" и "screenSize" , поскольку макет и размер экрана могут измениться, когда устройство переключается между книжной и альбомной ориентацией.

"screenLayout" Изменение макета экрана, например, когда становится активным другой дисплей.
"screenSize"

Изменение текущего доступного размера экрана.

Это представляет собой изменение доступного в данный момент размера относительно текущего соотношения сторон, поэтому оно меняется, когда пользователь переключается между альбомной и книжной ориентацией.

Добавлено на уровне API 13 .

"smallestScreenSize"

Изменение физического размера экрана.

Это представляет собой изменение размера независимо от ориентации, поэтому оно меняется только при изменении фактического физического размера экрана, например при переключении на внешний дисплей. Изменение этой конфигурации соответствует изменению конфигурации smallestWidth .

Добавлено на уровне API 13 .

"touchscreen" Изменение сенсорного экрана. Обычно этого не происходит.
"uiMode" Изменение режима пользовательского интерфейса, например, когда пользователь помещает устройство на стол или автомобильную док-станцию, или изменение ночного режима. Дополнительные сведения о различных режимах пользовательского интерфейса см. в разделе UiModeManager .

Добавлено в API уровня 8 .

Все эти изменения конфигурации могут повлиять на значения ресурсов, видимые приложением. Таким образом, когда вызывается onConfigurationChanged() , обычно необходимо снова получить все ресурсы, включая макеты представлений и элементы рисования, чтобы правильно обработать изменение.

Примечание. Для обработки изменений конфигурации, связанных с несколькими окнами , используйте "screenLayout" и "smallestScreenSize" . Многооконный режим поддерживается в Android 7.0 (уровень API 24) или выше.

android:directBootAware

Поддерживает ли действие Direct-Boot , то есть может ли оно выполняться до того, как пользователь разблокирует устройство.

Примечание. Во время прямой загрузки действие в вашем приложении может получить доступ только к данным, хранящимся в защищенном хранилище устройства .

Значение по умолчанию "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" , как и по умолчанию, чтобы система могла создать экземпляр действия. Если какой-либо из них имеет значение "false" , его экземпляр не может быть создан.

android:enableOnBackInvokedCallback
Этот флаг позволяет вам включить прогнозируемую системную анимацию на уровне активности. Такое поведение делает более управляемым переход больших приложений с несколькими действиями на интеллектуальные жесты назад.

Установка android:enableOnBackInvokedCallback=false отключает прогнозирующую обратную анимацию либо на уровне активности, либо на уровне приложения, в зависимости от того, где вы установили тег, и предписывает системе игнорировать вызовы API платформы OnBackInvokedCallback .

android:excludeFromRecents

Исключена ли задача, инициированная этим действием, с экрана «Последние» . То есть, когда это действие является корневым действием новой задачи, этот атрибут определяет, отображается ли задача в списке последних приложений. Это "true" если задача исключена из списка; "false" если оно включено . Значение по умолчанию "false" .

android:exported

Может ли активность запускаться компонентами других приложений:

  • Если "true" , действие доступно любому приложению и может быть запущено по точному имени класса.
  • Если "false" , действие может быть запущено только компонентами одного и того же приложения, приложениями с тем же идентификатором пользователя или привилегированными компонентами системы. Это значение по умолчанию, когда фильтры намерений отсутствуют.

Если действие в вашем приложении включает фильтры намерений, установите для этого элемента значение "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 платформы. Из-за увеличения ресурсов, необходимых для включения аппаратного ускорения, ваше приложение потребляет больше оперативной памяти.

Не все 2D-операции OpenGL ускоряются. Если вы включите средство рендеринга с аппаратным ускорением, проверьте, может ли ваше приложение использовать его без ошибок.

android:icon

Значок, обозначающий действие. Значок отображается пользователям, когда требуется представление действия на экране. Например, в окне запуска отображаются значки действий, которые инициируют задачи. Значок часто сопровождается меткой; информацию о метке см. в атрибуте android:label .

Этот атрибут устанавливается как ссылка на ресурс, который можно рисовать, содержащий определение изображения. Если он не установлен, вместо него используется значок, указанный для приложения в целом. Дополнительную информацию см. в атрибуте icon элемента <application> .

Значок действия, заданный здесь или элементом <application> , также является значком по умолчанию для всех фильтров намерений действия. Дополнительную информацию см. в атрибуте icon элемента <intent-filter> .

android:immersive
Устанавливает настройку режима погружения для текущего действия. Если это "true" , то для члена ActivityInfo.flags всегда установлен бит FLAG_IMMERSIVE , даже если режим погружения изменяется во время выполнения с помощью метода setImmersive() .
android:label

Читаемая пользователем метка действия. Метка отображается на экране, когда действие отображается пользователю. Он часто отображается вместе со значком активности. Если этот атрибут не установлен, вместо него используется метка, установленная для приложения в целом. см. атрибут label элемента <application> .

Метка действия, заданная здесь или элементом <application> , также является меткой по умолчанию для всех фильтров намерений действия. Дополнительную информацию см. в атрибуте label элемента <intent-filter> .

Метка задается как ссылка на строковый ресурс, чтобы ее можно было локализовать, как и другие строки в пользовательском интерфейсе. Однако для удобства при разработке приложения его также можно задать как необработанную строку.

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" Если центр обработки данных авторизует этот пакет с помощью DevicePolicyManager.setLockTaskPackages() , то этот режим идентичен always , за исключением того, что действию необходимо вызвать stopLockTask() прежде чем он сможет завершиться, если это последняя заблокированная задача. Если ЦОД не авторизует этот пакет, то этот режим идентичен normal .
"always"

Задачи, связанные с этим действием, всегда запускаются в режиме блокировки задач. Если на момент запуска этой задачи система уже находится в режиме блокировки задачи, то новая задача запускается поверх текущей задачи. Задачи, запущенные в этом режиме, могут выйти из режима блокировки задач, вызвав finish() .

Примечание. Этот режим доступен только для системных и привилегированных приложений. Непривилегированные приложения с этим значением рассматриваются как normal .

Этот атрибут был введен на уровне API 23.

android:maxRecents
Максимальное количество задач, связанных с этим действием, на экране «Последние» . При достижении этого количества записей система удаляет экземпляр, который использовался реже всего, с экрана «Последние». Допустимые значения — целые числа от 1 до 50 или от 1 до 25 на устройствах с малым объемом памяти. Ноль недействителен. Значение по умолчанию — 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
Имя класса логического родительского действия. Имя здесь должно соответствовать имени класса, указанному в атрибуте android:name соответствующего элемента <activity> .

Система считывает этот атрибут, чтобы определить, какое действие следует запустить, когда пользователь нажимает кнопку «Вверх» на панели действий. Система также может использовать эту информацию для синтеза обратного стека действий с помощью TaskStackBuilder .

Для поддержки уровней API 4–16 вы также можете объявить родительскую активность с помощью элемента <meta-data> , который указывает значение для "android.support.PARENT_ACTIVITY" :

<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 . Если у действия нет атрибута persistableMode , которому присвоено значение persistAcrossReboots , или если оно запущено с использованием флага Intent.FLAG_ACTIVITY_NEW_DOCUMENT , то это действие вместе со всеми действиями выше в заднем стеке не сохраняется.

Когда намерение загружает действие, для атрибута persistableMode которого установлено значение persistAcrossReboots в вашем приложении, действие получает объект PersistableBundle в своем методе onCreate() . Таким образом, вы можете использовать onSaveInstanceState() для сохранения состояния действия при перезапуске устройства, если для его атрибута persistableMode установлено значение persistAcrossReboots .

Примечание. Значение этого атрибута влияет на поведение вашего приложения, даже если оно установлено для действия, отличного от корневого действия вашего приложения.

persistNever

Состояние активности не сохраняется.

Примечание. Значение этого атрибута влияет на поведение вашего приложения, только если оно установлено в корневом действии вашего приложения.

Этот атрибут был введен на уровне API 21.

android:permission
Имя разрешения, которое клиенты должны иметь для запуска действия или иного получения ответа на намерение. Если вызывающему объекту startActivity() или startActivityForResult() не предоставлено указанное разрешение, его намерение не передается действию.

Если этот атрибут не установлен, к действию применяется разрешение, установленное атрибутом permission элемента <application> . Если ни один из атрибутов не установлен, действие не защищено разрешением.

Для получения дополнительной информации о разрешениях см. В разделе «Разрешения» приложения. Обзор Manifest и советы по безопасности .

android:process

Название процесса, в котором работает деятельность. Обычно все компоненты приложения запускаются в имени процесса по умолчанию, созданному для приложения, и вам не нужно использовать этот атрибут. Но при необходимости вы можете переопределить имя процесса по умолчанию с помощью этого атрибута, позволяя вам распространять компоненты вашего приложения по нескольким процессам.

Если имя, присвоенное этому атрибуту, начинается с толстой кишки ( : , новый процесс, частный для приложения, создается, когда он необходим, и активность выполняется в этом процессе.

Если имя процесса начинается с символа строчной строки, деятельность работает в глобальном процессе этого имени, при условии, что у него есть разрешение на это. Это позволяет компонентам в разных приложениях разделять процесс, уменьшая использование ресурсов.

Атрибут process <application> элемента может установить другое имя процесса по умолчанию для всех компонентов.

android:relinquishTaskIdentity

Определяет ли деятельность свои идентификаторы задач в действие над ней в стеке задач. Задача, чья корневая деятельность имеет этот атрибут, установленную на "true" заменяет базовые Intent на следующую деятельность в задаче.

Если следующее действие также имеет этот атрибут, установленный "true" , то это дает базовое Intent для любого действия, которое он запускает в той же задаче. Это продолжается для каждой деятельности до тех пор, пока не будет обнаружена деятельность, которая устанавливает этот атрибут для "false" . Значение по умолчанию "false" .

Этот атрибут устанавливается на "true" также позволяет использовать действие ActivityManager.TaskDescription для изменения метки, цветов и значков на экране Recents .

android:requireContentUriPermissionFromCaller

Определяет разрешения, необходимые для запуска этой деятельности при прохождении контента URI. Значение по умолчанию none является, что означает, что конкретные разрешения не требуются. Установка этого атрибута ограничивает вызов деятельности на основе разрешений Invoker. Если у Invoker нет необходимых разрешений, начало деятельности будет отказано в сфере SecurityException .

Обратите внимание, что правоприменение работает для контента uris inside Intent.getData() , Intent.EXTRA_STREAM и Intent.getClipData() .

Может быть строковым значением, используя '\\;' избежать таких символов, как '\\ n' или '\\ uxxxx' для символа Unicode;

Должен быть одним из следующих постоянных значений.

Постоянный Ценить Описание
никто 0 По умолчанию, конкретные разрешения не требуются.
читать 1 Обеспечивает соблюдение Invoker, чтобы получить доступ к пройденному контенту URI.
Прочитайте и напишите 4 Обеспечивает соблюдение Invoker иметь как прочитать, так и написать доступ к пройденному контенту URI.
Читатель 3 Обеспечивает соблюдение Invoker иметь доступ к прочтению или записи доступа к прошедшему контенту URI.
писать 2 Обеспечивает соблюдение Invoker иметь доступ к записи к пройденному контенту URI.
android:resizeableActivity

Определяет, поддерживает ли приложение режим с несколькими Window . Вы можете установить этот атрибут в элементе <activity> или <application> .

Если вы установите этот атрибут на "true" , пользователь может запустить деятельность в режимах разделенного экрана и свободной формы. Если вы установите атрибут "false" , приложение не может быть проверено или оптимизировано для мульти-окна. Система все еще может поместить активность в режиме с несколькими окнами с применением режима совместимости.

Установка этого атрибута для "false" не гарантирует, что в режиме многонародного режима нет других приложений, которые нет, например, в картинке в картинке или на других дисплеях. Поэтому настройка этого флага не означает, что ваше приложение имеет эксклюзивный доступ к ресурсам.

Если ваше приложение нацелено на уровень API 24 или выше, и вы не указываете значение для этого атрибута, значение атрибута по умолчанию "true" .

Если ваше приложение нацелено на уровень API 31 или выше, этот атрибут работает по -разному на малых и больших экранах:

  • Большие экраны (SW> = 600DP): все приложения поддерживают многолютный режим. Атрибут указывает, можно ли изменять приложение, а не то, поддерживает ли приложение режим нескольких Window. Если resizeableActivity="false" , приложение помещается в режим совместимости, когда это необходимо, чтобы соответствовать размеру размеров.
  • Небольшие экраны (SW <600DP): если resizeableActivity="true" и минимальная ширина и минимальная высота активности находятся в пределах требований к мульти-окнам, приложение поддерживает режим мульти-окна. Если resizeableActivity="false" , приложение не поддерживает режим мульти-окна независимо от минимальной ширины и высоты активности.

Примечание. Производители устройств могут переопределить поведение уровня API 31.

Этот атрибут был добавлен на уровне API 24.

ПРИМЕЧАНИЕ. Значение корневой активности задачи применяется ко всем дополнительным действиям, запущенным в задаче. То есть, если корневая активность задачи является изменяемой, то система рассматривает все другие действия в задаче как определяемые. Если корневая деятельность не будет изменена, другие действия в задаче не решаются.

android:screenOrientation

Запрошенная ориентация деятельности.

Когда деятельность заполняет весь экран, запрошенная ориентация действует как предложение изменить ориентацию на этом экране, чтобы соответствовать запрошенному значению. Это может привести к ориентации, которая отличается от физической ориентации экрана в пространстве, требуя, чтобы пользователь повернул устройство, чтобы продолжить использование приложения. На Android 12 (уровень 31 31 и выше, производители устройств могут настроить отдельные экраны устройств (такие как экран размером с планшета складываемого), чтобы игнорировать это предложение, а вместо этого заставляют деятельность, чтобы быть буквами, находящейся в предпочтительной ориентации пользователя устройство. Это приводит к тому, что ориентация деятельности, соответствующая запрошему, без необходимости физического вращения своего устройства.

В режиме нескольких Window запрашиваемая ориентация не действует как предложение для общей ориентации. Если деятельность является буквой , запрошенная ориентация влияет на буквы, применяемое к деятельности.

Значение может быть любой из следующих строк:

"unspecified" Значение по умолчанию. Система выбирает ориентацию. Политика, которую он использует, и, следовательно, выбор, сделанный в определенных контекстах, может отличаться от устройства к устройству.
"behind" Та же ориентация, что и деятельность, которая сразу под ним находится в стеке деятельности.
"landscape" Ориентация ландшафта (дисплей шире, чем высокий).
"portrait" Портретная ориентация (дисплей выше, чем широкий).
"reverseLandscape" Ориентация ландшафта в противоположном направлении от нормального ландшафта. Добавлено в уровне API 9.
"reversePortrait" Портретная ориентация в противоположном направлении от обычного портрета. Добавлено в уровне API 9.
"sensorLandscape" Ориентация ландшафта, но может быть либо нормальным, либо обратным ландшафтом на основе датчика устройства. Датчик используется, даже если пользователь имеет вращение на основе датчика на основе датчиков. Добавлено в уровне API 9.
"sensorPortrait" Портретная ориентация, но может быть либо нормальным, либо обратным портретом на основе датчика устройства. Датчик используется, даже если пользователь имеет вращение на основе датчика на основе датчиков. Однако, в зависимости от конфигурации устройства, вращение перевернута может быть не разрешено. Добавлено в уровне API 9.
"userLandscape" Ориентация ландшафта, но может быть либо нормальным, либо обратным ландшафтом на основе датчика устройства и предпочтения пользователя. Добавлен на уровне API 18.
"userPortrait" Портретная ориентация, но может быть либо нормальным, либо обратным портретом на основе датчика устройства и предпочтения пользователя. Однако, в зависимости от конфигурации устройства, вращение перевернута может быть не разрешено. Добавлен на уровне API 18.
"sensor" Датчик ориентации устройства определяет ориентацию. Ориентация дисплея зависит от того, как пользователь удерживает устройство. Он меняется, когда пользователь поворачивает устройство. Некоторые устройства, однако, не вращаются ко всем четырем возможным ориентациям по умолчанию. Чтобы использовать все четыре ориентации, используйте "fullSensor" . Датчик используется, даже если пользователь заблокирован на основе датчика.
"fullSensor" Датчик ориентации устройства определяет ориентацию для любой из четырех ориентаций. Это похоже на "sensor" , за исключением того, что это позволяет использовать любую из четырех возможных ориентаций экрана независимо от того, что обычно поддерживает устройство. Например, некоторые устройства обычно не используют обратный портрет или обратный ландшафт, но это обеспечивает эти ориентации. Добавлено в уровне API 9.
"nosensor" Ориентация определяется без ссылки на датчик физической ориентации. Датчик игнорируется, поэтому дисплей не вращается в зависимости от того, как пользователь перемещает устройство.
"user" Текущая предпочтительная ориентация пользователя.
"fullUser" Если пользователь имеет вращение на основе датчиков, это ведет себя так же, как и user , в противном случае он ведет себя так же, как и fullSensor , и позволяет любую из четырех возможных ориентаций экрана. Добавлен на уровне 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() проходит null вместо Bundle , как это происходит, когда деятельность начинается в первый раз.

Настройка "true" означает, что деятельность может быть перезапущена без оставшегося состояния. Например, действие, которое отображает домашний экран, использует этот настройки, чтобы убедиться, что он не удаляется, если по какой -то причине вылетает.

android:supportsPictureInPicture

Указывает, поддерживает ли деятельность дисплей изображения в картине .

android:taskAffinity

Задача, к которой деятельность имеет сродство. Действия с той же сродством концептуально принадлежат к той же задаче, к тому же «приложению» с точки зрения пользователя. Сродство задачи определяется аффинностью ее корневой деятельности.

Аффинность определяет две вещи: задача, которую выполняется действием, перезаричена (см. Атрибут allowTaskReparenting ) и задачу, в которой находится деятельность, когда она запускается с флагом FLAG_ACTIVITY_NEW_TASK .

По умолчанию все действия в приложении имеют одинаковую близость. Вы можете установить этот атрибут, чтобы группировать их по -разному и даже поместить действия, определенные в разных приложениях в рамках одной и той же задачи. Чтобы указать, что деятельность не имеет сродства к какой -либо задаче, установите ее на пустую строку.

Если этот атрибут не установлен, действие наследует набор сродства для приложения. См. Атрибут <application> элемента taskAffinity . Имя аффинности по умолчанию для приложения - это пространство имен, установленное в файле build.gradle .

android:theme
Ссылка на ресурс стиля, определяющий общую тему для деятельности. Это автоматически устанавливает контекст деятельности для использования этой theme , а также может вызвать «запуск» анимации до запуска деятельности, чтобы лучше соответствовать тому, как на самом деле выглядит деятельность.

Если этот атрибут не установлен, деятельность наследует набор темы для приложения в целом, от атрибута theme элемента <application> . Если этот атрибут также не установлен, используется тема системы по умолчанию. Для получения дополнительной информации см. Стили и темы .

android:uiOptions

Дополнительные варианты для пользовательского интерфейса деятельности. Должен быть одним из следующих значений.

Ценить Описание
"none" Нет дополнительных вариантов пользовательского интерфейса. Это значение по умолчанию.
"splitActionBarWhenNarrow" Добавляет панель в нижней части экрана, чтобы отображать элементы действия в панели приложений , также известную как панель действий , когда он ограничен для горизонтального пространства, например, в портретном режиме на телефоне. Вместо небольшого количества элементов действий, появляющихся в панели приложений в верхней части экрана, панель приложений разделена на верхнюю серию навигации и нижнюю панель для элементов действий. Это означает, что разумное количество места предоставляется не только для элементов действия, но и для навигационных и титульных элементов наверху. Пункты меню не разделены по двум барам. Они всегда появляются вместе.

Для получения дополнительной информации о панели приложений см. Добавьте панель приложений .

Этот атрибут был добавлен на уровне API 14.

android:windowSoftInputMode
Как главное окно активности взаимодействует с окном, содержащим мягкую клавиатуру на экране. Настройка для этого атрибута влияет на две вещи:
  • Независимо от того, скрыта ли мягкая клавиатура или видимая, когда деятельность становится центром внимания пользователя.
  • Независимо от того, является ли основное окно активности меньше, чтобы освободить место для мягкой клавиатуры или содержимого сковороды, чтобы сделать текущий фокус видимым, когда часть окна покрыта мягкой клавиатурой.

Настройка должна быть одним из значений, перечисленных в следующей таблице, или комбинацией одного значения "state..." плюс одно "adjust..." . Установка нескольких значений в любой группе, таких как несколько значений "state..." , имеет неопределенные результаты. Отдельные значения разделены вертикальной стержней ( | ), как показано в следующем примере:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

Значения, установленные здесь (кроме "stateUnspecified" и "adjustUnspecified" ) переопределяют значения, установленные в теме.

Ценить Описание
"stateUnspecified" Неудачна ли мягкая клавиатура скрыта или видимая, не указана. Система выбирает соответствующее состояние или опирается на настройку в теме.

Это настройка по умолчанию для поведения мягкой клавиатуры.

"stateUnchanged" Мягкая клавиатура хранится в любом состоянии, который он был последним, видимым или скрытым, когда деятельность выходит на первый план.
"stateHidden" Мягкая клавиатура скрыта, когда пользователь выбирает деятельность, то есть, когда пользователь утвердительно перемещается вперед к деятельности, вместо того, чтобы вернуться в нее, оставляя другое действие.
"stateAlwaysHidden" Мягкая клавиатура всегда скрыта, когда главное окно деятельности имеет фокус ввода.
"stateVisible" Мягкая клавиатура становится видимой, когда пользователь выбирает деятельность, то есть, когда пользователь утвердительно перемещается вперед к деятельности, вместо того, чтобы вернуться в нее, оставляя другое действие.
"stateAlwaysVisible" Мягкая клавиатура видна, когда окно получает фокус ввода.
"adjustUnspecified" Независимо от того, изменяется ли основное окно деятельности, чтобы освободить место для мягкой клавиатуры или содержимого оконной сковороды, чтобы сделать текущий фокус видимым на экране, не указано. Система автоматически выбирает один из этих режимов в зависимости от того, имеет ли содержимое окна какие -либо представления макета, которые могут прокрутить их содержимое. Если есть такой вид, окно изменяется размер, предполагая, что прокрутка может сделать все содержимое окна видимым в меньшей области.

Это настройка по умолчанию для поведения главного окна.

"adjustResize" Главное окно деятельности всегда изменяется, чтобы освободить место для мягкой клавиатуры на экране.
"adjustPan" Главное окно деятельности не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически панирует так, что текущая фокус никогда не скрывался клавиатурой, и пользователи всегда могут увидеть, что они печатают. Как правило, это менее желательно, чем изменение размера, потому что пользователю может потребоваться закрыть мягкую клавиатуру, чтобы достичь и взаимодействовать с скрытыми частями окна.

Этот атрибут был введен на уровне 3 API.

введено в:
API Уровень 1 для всех атрибутов, кроме noHistory и windowSoftInputMode , которые были добавлены на уровне API 3.
смотрите также:
<application>
<activity-alias>