← Назад к вопросам

Что можно указать у Activity в AndroidManifest.xml

1.6 Junior🔥 251 комментариев
#Android компоненты#Жизненный цикл и навигация

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные атрибуты Activity в AndroidManifest.xml

При объявлении Activity в AndroidManifest.xml разработчик может указать ряд атрибутов, которые определяют поведение, внешний вид и взаимодействие компонента с системой Android. Эти атрибуты задаются внутри тега <activity> и являются ключевыми для корректной работы приложения.

Обязательные и базовые атрибуты

  • android:name (обязательный): Указывает полное имя класса Activity (например, com.example.MainActivity). Можно использовать сокращённую форму .MainActivity, если класс находится в базовом пакете приложения.

    <activity android:name=".MainActivity" />
    
  • android:exported (обязательный с Android 12+): Определяет, могут ли другие приложения запускать Activity. Значение true разрешает внешний доступ, false ограничивает запуск только своим приложением. Для Activity с intent-filter по умолчанию true.

    <activity android:name=".MainActivity" android:exported="false" />
    

Атрибуты для конфигурации запуска и навигации

  • android:launchMode: Задает режим запуска Activity (например, standard, singleTop, singleTask, singleInstance). Влияет на создание новых экземпляров и управление стеком задач.

    <activity android:name=".DetailActivity" android:launchMode="singleTop" />
    
  • android:screenOrientation: Фиксирует ориентацию экрана (portrait, landscape, sensor и др.).

  • android:configChanges: Указывает, какие изменения конфигурации (например, поворот экрана) Activity будет обрабатывать самостоятельно, без пересоздания.

    <activity android:name=".CameraActivity" 
              android:screenOrientation="portrait"
              android:configChanges="orientation|screenSize" />
    

Атрибуты для темы и внешнего вида

  • android:theme: Применяет тему к Activity (например, @style/Theme.AppCompat.Light.NoActionBar).
  • android:windowSoftInputMode: Управляет поведением клавиатуры при её появлении (например, adjustResize для изменения размера макета).
    <activity android:name=".ChatActivity"
              android:theme="@style/Theme.AppCompat.Dialog"
              android:windowSoftInputMode="adjustResize" />
    

Атрибуты для безопасности и разрешений

  • android:permission: Требует определённое разрешение для запуска Activity.
  • android:directBootAware (с API 24): Позволяет Activity работать в режиме Direct Boot до разблокировки устройства.

Intent-filter и роль Activity

  • <intent-filter>: Определяет, как Activity может быть запущена (например, как главный экран или для обработки определённых данных). Включает:
    • <action> (например, android.intent.action.MAIN).
    • <category> (например, android.intent.category.LAUNCHER).
    • <data> для указания типов данных (URI, MIME-типы).
    <activity android:name=".MainActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

Дополнительные атрибуты

  • android:taskAffinity: Группирует Activity в отдельные задачи.
  • android:allowTaskReparenting: Позволяет Activity переходить между задачами.
  • android:excludeFromRecents: Исключает задачу из списка недавних приложений.
  • android:finishOnTaskLaunch: Автоматически завершает Activity при перезапуске задачи.

Пример комплексного объявления

<activity
    android:name=".PaymentActivity"
    android:exported="false"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.AppCompat.Light"
    android:windowSoftInputMode="stateHidden|adjustPan"
    android:configChanges="keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="myapp" android:host="payment" />
    </intent-filter>
</activity>

Правильная настройка этих атрибутов критична для безопасности, производительности и пользовательского опыта. Например, некорректный android:exported может привести к уязвимостям, а неправильный launchMode — к неожиданному поведению навигации. Всегда тестируйте конфигурации на реальных устройствах и учитывайте рекомендации Android Developers.