Какие знаешь нюансы работы с Intent

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

Ответ

Intent — это механизм для взаимодействия между компонентами приложения или между разными приложениями. Основные нюансы:

  1. Явные и неявные Intent

    • Явные указывают конкретный компонент (new Intent(this, ActivityB.class)).
    • Неявные описывают действие (ACTION_VIEW) и данные (Uri.parse("http://...")), система сама выбирает подходящий компонент.
  2. FLAG_ACTIVITY флаги_*
    Например, FLAG_ACTIVITY_NEW_TASK запускает Activity в новом таске, если приложение не в foreground.

  3. Ограничения с Android 10+
    Запрет на запуск Activity из фона (исключение: PendingIntent).

  4. Данные в Intent
    Можно передавать примитивы, строки, Parcelable, Serializable. Большие данные (>1MB) лучше передавать через ViewModel или статичные поля.

Пример:

val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://google.com"))
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)