Расскажите основные компоненты Android и их назначение
Что проверяют
Знаете ли вы четыре типа компонентов, чем они отличаются и зачем каждому запись в манифесте.
Как отвечать
Activity: экран с интерфейсом, точка входа для пользователя. Живёт по жизненному циклу (onCreate, onStart, onResume и обратно), система может убить её в любой момент, поэтому состояние сохраняется отдельно.
Service: работа без интерфейса. Foreground-сервис с уведомлением для того, что видит пользователь (музыка, навигация); фоновые ограничения с восьмой версии жёсткие, и обычную отложенную работу давно делают через WorkManager.
BroadcastReceiver: приёмник системных и своих событий (заряд, сеть, загрузка завершена). Регистрация в манифесте для многих событий больше не работает, нужна динамическая.
ContentProvider: доступ к данным приложения для других приложений через URI. Внутри одного приложения обычно не нужен, но именно он стоит за доступом к контактам и галерее.
Связывает их Intent: явный указывает конкретный компонент, неявный описывает намерение, и система подбирает обработчика по intent-фильтрам.
Всё, кроме динамически зарегистрированных приёмников, объявляется в манифесте: система должна знать о компоненте до запуска приложения.
Где спотыкаются
Называют Fragment пятым компонентом. Фрагмент это часть активности, а не самостоятельный компонент.
Считают, что сервис работает в отдельном потоке. Он в главном, поток нужно заводить самому.
Не знают про ограничения фоновой работы и предлагают сервис там, где нужен WorkManager.
Не могут объяснить, почему активность пересоздаётся при повороте и что с этим делать.