Зачем надо объявлять основные компоненты в манифесте

«Зачем надо объявлять основные компоненты в манифесте» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Объявление компонентов (Activity, Service, BroadcastReceiver, ContentProvider) в AndroidManifest.xml необходимо, потому что система Android использует манифест для:

  1. Идентификации компонентов - без регистрации система не узнает об их существовании
  2. Управления правами - например, для объявления требуемых разрешений
  3. Конфигурации компонентов - задание launchMode для Activity, экспорта ContentProvider и т.д.

Пример объявления Activity:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Исключение - динамические BroadcastReceiver, которые можно регистрировать в коде через registerReceiver().