Android собеседование

Какие бывают виды сервисов?

Всего есть три вида сервисов: Foreground Foreground Service это сервис о котором осведомлен пользователь. Такие сервисы высвечивают уведомление в шторке уведомлений, с помощью которого пользователь может взаимодействовать с ними. Пример: сервис, который проигрывает музыку. Background Такие сервисы не видны пользователю…

Читать полностью

Для чего предназначен Service в Android?

Service (сервис) — это компонент приложения, который предназначен для выполнения длительных фоновых операций. При этом сервис не предоставляет UI. Как только сервис будет запущен он может оставаться активным даже после того, как пользователь покинет приложение, в котором данный сервис был…

Читать полностью

Назовите отличия Dialog от DialogFragment

Раньше класс Dialog использовался для отображения всплывающих окон в Android. Сейчас же рекомендуется использовать DialogFragment как новый способ это делать, а класс Dialog сейчас использовать нежелательно (метод showDialog() deprecated). Дело в том, что у DialogFragment есть одно очень важное преимущество…

Читать полностью

Синхронный ли метод FragmentTransaction.commit()?

Нет, данный метод асинхронный. Вызов commit() не произведет транзакцию сразу после вызова. Вместо этого, он добавит транзакцию в очередь главного потока, ждать своего выполнения, и исполнит транзакцию как только подойдет ее очередь. Если необходимо исполнить транзакцию сразу, то можно использовать…

Читать полностью

Где используется Target Fragment?

TargetFragment используется примерно для того же что и startActivityForResult(), но между фрагментами. Таргет фрагмент это фрагмент который вызывает другой фрагмент чтобы получить из него какой-либо результат () Чтобы использовать его для того, чтобы получить результат выполнения какого-либо фрагмента необходимо проделать…

Читать полностью

Что такое жизненный цикл фрагмента?

Фрагменты реализуют интерфейс LifecycleOwner и, соответственно, у них можно получить объект Lifecycle. У Lifecycle есть всего 5 состояний: INITIALIZED, CREATED, STARTED, RESUMED, DESTROYED. То есть сам жизненный цикл фрагмента по сути точно такой же как и у активити, так как…

Читать полностью

Методы получения ссылки на Fragment из Activity

Есть два стандартных метода, которые вы можете вызвать на активити, чтобы найти в ней фрагмент. Это findFragmentByTag(String) и findFragmentById(Int). Данные методы позволяют найти фрагмент из активити. Первый метод находит фрагмент по тегу, который был использован при добавлении фрагмента методами add()…

Читать полностью

Запустится ли приложение в нескольких процессах?

По умолчанию одно приложения запускается в одном процессе, но можно его запустить и в разных. Пока запущено андроид устройство, пользователь может покинуть приложение (например, чтобы ответить на входящий звонок), на какое-то время и тогда система может убить процесс, в котором…

Читать полностью

Как можно добавлять и переключать фрагменты? Как работать с бэкстэком?

Если не говорить про NavigationComponent из Jetpack, то для добавления, переключения и удаления фрагментов используются два класса, FragmentManager и FragmentTransaction, но на самом деле почти все происходит в FragmentTransaction, менеджер нужен только чтобы получить транзакцию. Получить транзакцию можно методом менеджера…

Читать полностью

Расскажите про реализацию метода View.onMeasure()

onMeasure() — метод, необходимый, чтобы определить размеры View и его “детей”. Данный метод должен быть переопределен таким образом, чтобы быстро и точно возвращать размеры View и его “детей”. Так же есть установки на View от его родителей, который накладывают дополнительные…

Читать полностью

Создание кастомной View в Android

Чтобы создать кастомную View, необходимо проделать следующие шаги Создать класс, который будет наследовать View или же наследника View. Переопределить конструкторы Всего есть 4 конструктора, каждый из них используется для своих целей. Чтобы начать пользоваться кастомной View, необходимо переопределить только один,…

Читать полностью

Способы регистрации BroadcastReceiver и их различия

Есть всего два различных способа регистрации BroadcastReceiver: статический и динамический. Статический способ регистрации — это когда ресивер зарегистрирован через AndroidManifest.xml файл используя тег <receiver>. Динамический же означает, что ресивер был зарегистрирован используя метод класса Context, registerReceiver(). При регистрации ресивера через…

Читать полностью

Что вы знаете про BroadcastReceiver?

Android приложения могут получать различные сообщения от самой системы, а также от других приложений и от других компонентов данного приложения. Эти сообщения называются broadcast (широковещательные сообщения). Например, система рассылает данные сообщения когда запускается или когда устройство подключается к зарядке. Для…

Читать полностью

Сохранение состояния при портретной ориентации в Android

Следует сохранять состояние, так как Configuration Change может произойти не только при изменении ориентации экрана. Изменение ориентации экрана это только частный случай изменения конфигурации. Изменение языка системы например тоже считается изменением конфигурации. Да и сохранять состояние может быть нужно не…

Читать полностью

Что делать при повороте экрана в Android

При смене ориентации приложения Activity уничтожается и создается заново. Удаляются, соответственно, и все объекты. Вызываются коллбэки в составе жизненного цикла onPause(), onStop(), onSaveInstanceState(), onDestroy() – onCreate(), onStart(), onRestoreInstanceState(), onResume(). Чтобы сохранить созданные в активити объекты и данные, необходимо реализовать пару…

Читать полностью

Чем отличается метод onCreate() от onStart()?

Оба метода являются частью жизненного цикла Activity. onCreate() – вызывается, когда активити создается в первый раз или происходит изменение конфигурации. Активити еще не видна пользователю. В методе задаются первоначальные настройки, создаются объекты визуального интерфейса. Этот метод получает объект Bundle, который…

Читать полностью

Содержание файла AndroidManifest.xml

AndroidManifest содержит ключевую информацию о приложении — название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д. Ключевые теги в порядке вложенности: – в корневом теге по умолчанию определяется пакет приложения. – тег определяет основные…

Читать полностью

Контекст и его использование

Context – это базовый класс, который реализуется самой системой Android. Он предоставляет доступ к базовым функциям приложения. Такие основные компоненты как Activity, Application и другие наследуются от класса Context. Используя контекст, можно: получить текущее состояние (state) приложения, получить доступ к…

Читать полностью

Расскажите про View

View – это класс элемента графического интерфейса. По своей сути View – это общее название для всех элементов графического интерфейса. View это суперкласс всех привычных нам элементов UI Android, таких как TextView, EditText, Button. Но не только эти классы наследуются…

Читать полностью

Расскажите про Fragment

Фрагменты можно представить как легковесную активити. Они представляют собой часть UI, которую можно переиспользовать много раз. Как и у активити, у фрагмента есть свой lifecycle, layout и он может обрабатывать действия пользователя на своем layout. С помощью фрагментов можно внести…

Читать полностью