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

Познакомимся?
Android [Kotlin] для начинающих - изображение Иван Ветров

Разработчик по Android-разработке и Kotlin

Меня зовут Иван. Я автор уроков на YouTube по разработке Android-приложений под ником ievetrov

Здесь вы найдете видео и текстовые версии уроков по созданию Android-приложений. Все видео можно посмотреть на канале YouTube и VK. Обучение рассчитано на начинающих разработчиков, а также на тех, у кого совсем нет опыта в разработке мобильных приложений.

Научитесь создавать мобильные приложения для Android с нуля. Создание экранов, работа с UI, навигация между страницами. Первые приложения в портфолио для будущего трудоустройства.

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

Если не говорить про NavigationComponent из Jetpack, то для добавления, переключения и удаления фрагментов используются два класса, FragmentManager и FragmentTransaction, но на самом деле почти все происходит в FragmentTransaction, менеджер нужен только чтобы получить транзакцию. Получить транзакцию можно методом менеджера beginTransaction(). Чтобы добавить фрагмент используется метод add(), чтобы заменить replace(), а чтобы удалить remove(). Транзакция […]

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

AndroidManifest содержит ключевую информацию о приложении — название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д. Ключевые теги в порядке вложенности: Например, intent-filter может содержать вложенные элементы и . В теге атрибут“android:name=»android.intent.action.MAIN”– обозначает, что данная активити будет являться точкой входа в приложение. А тег с атрибутом“android:name=»android.intent.category.LAUNCHER”– указывает на то, […]

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

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

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

Смотреть урок →

Kotlin-практикум с Иваном Ветровым

Запишись бесплатно и получи приглашение на персональную работу

Бесплатная предзапись

Новый поток формируется — осталось 2-3 дня до старта

  • Персональная работа с Иваном Ветровым 10 дней
  • 25 задач с персональным код-ревью
  • Настройка профессиональных инструментов
  • 3 проекта для портфолио + рекомендации
Подробнее про Onboarding
Специальное предложение - изучение Android разработки со скидкой