Как Android понимает что нужно запустить Activity

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

Ответ

Android определяет, какую Activity запустить, через Intent и Intent Filters в манифесте.

  • Явный Intent указывает конкретный класс Activity:
    val intent = Intent(this, TargetActivity::class.java)
    startActivity(intent)
  • Неявный Intent описывает действие (например, ACTION_VIEW) и данные (например, URI). Система ищет Activity с подходящим <intent-filter> в манифесте:
    <activity android:name=".MyActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="http" android:host="example.com" />
        </intent-filter>
    </activity>

Если несколько Activity подходят, показывается диалог выбора (Chooser). Приоритет определяется по <priority> в <intent-filter>.