1. Пересоздается ли Activity при смене языка системы?
Да, после смены языка происходит полный цикл создания Activity.
2. Что такое Zygote?
Это служба, которая является обязательным компонентом Android-системы. Она отвечает за инициализацию, старт системных служб, запуск и остановку пользовательских приложений и запускается после виртуальной машины Dalvik.
3 Что такое Doze Mode?
Появился в Android 6.0 (API 23). Режим работы системы Android, который запускается, в случае если устройство находится без активного использования и зарядки более одного часа. Данный режим ограничивает функциональность всех приложений, запрещая использовать сеть, Alarm’ы, планировщики.
4. Что такое App Standby?
Появился в Android 6.0 (API 23). Режим работы приложения, который также ограничивает функциональные возможности. Система включает данный режим, если пользователь некоторое время не использует приложение и у приложения нет никаких уведомлений на экране блокировки или панели уведомлений.
5. В чем отличие Dialog от DialogFragment?
Класс Dialog используется для отображения диалогового окна и не позволяет управлять его жизненным циклом. Класс DialogFragment представляет собой фрагмент, который содержит Dialog и позволяет управлять своим жизненным циклом, не допуская утечек памяти и других неявных проблем.
6. Что такое Target Fragment?
Target Fragment используется для взаимодействия между фрагментами, когда один фрагмент, содержит в себе другой фрагмент. Таким образом можно взаимодействовать с родительским фрагментом, по аналогии с методом startActivityForResult() который используется для получения обратной связи в Activity.
7. Для чего нужен SnapHelper?
Класс в Android, который предназначен для изменения поведения прокрутки элементов в RecyclerView. При помощи данного класса, можно сымитировать прокрутку элементов на одну позицию, как это делает ViewPager.
8. Что такое Flavors?
Product flavors – это параметр в Gradle, который предоставляет возможность разделить наше приложение на несколько версий, которые будут иметь различный функционал, например, версии demo/full, разделение приложения для клиентов и администраторов.
productFlavors {
demo {
dimension "version"
applicationId "com.stackofskills.demo"
resValue "string", "flavoredName", "Demo App"
}
full {
dimension "version"
applicationId "com.stackofskills.full"
resValue "string", "flavoredName", "Full App"
}
}
9. Что такое BuildType?
Данный параметр в Gradle необходим для создания сборок нашего приложения с различными настройками, например каким сертификатом подписывать приложение, какие адреса использовать для сетевых запросов.
signingConfigs {
config {
keyAlias 'stackofskills'
keyPassword 'password'
storeFile file(C:/android/key/key.jks)
storePassword 'password'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", 'URL', '"https://stackofskills.com"'
signingConfig signingConfigs.config
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", 'URL', '"https://demo.stackofskills.com"'
}
}
10. Что такое BuildVariant?
Это совокупность параметров BuildType и Flavors, для создания итоговых билдов приложения, содержащих все необходимые настройки.