Ответ
В Android приложении сборка начинается с класса Application. Это базовый класс, который инициализируется первым при запуске приложения, еще до любых Activity.
Пример объявления в манифесте:
<application
android:name=".MyApplication"
...>
</application>
Класс MyApplication должен наследоваться от android.app.Application:
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// Инициализация общих компонентов
}
}
Здесь можно выполнять глобальную инициализацию (например, DI, аналитики, БД). Однако для простых приложений можно не создавать подкласс, используя стандартный Application.
Ответ 18+ 🔞
Э, слушай, вот тебе история про то, с чего вся эта движуха в андроиде начинается. Есть у них там такая штука — класс Application. Это, бля, как батя всей этой системы, который просыпается самым первым, ещё до того, как твоя первая активити моргнёт. Он встаёт, потягивается и говорит: «Так, пацаны, сейчас я всё тут подготовлю, а потом уже вы свои дела делайте». Ёпта, основа основ, хуй с горы.
Вот смотри, как это в манифесте прописывается, это же элементарно:
<application
android:name=".MyApplication"
...>
</application>
Видишь этот android:name? Это ты ему говоришь: «Слушай, система, не используй свой стандартный Application, а возьми мой, я там свои костыли прикрутил». Без этого параметра он просто возьмёт дефолтный, и всё.
А сам этот твой класс MyApplication — это просто наследничек от android.app.Application. Пишешь так:
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// Инициализация общих компонентов
}
}
Вот этот метод onCreate() — это святое место. Тут ты можешь, бля, всё что угодно инициализировать, что должно жить всё время, пока приложение не накрылось медным тазом. Твой DI-контейнер, который ты собрал из трёх библиотек? Сюда. Аналитика, которая будет следить за каждым твоим чихом? Прямо сюда. Настройка базы данных, чтобы она не пиздела тебе в самый ответственный момент? Тоже сюда, ёпта.
Но вот в чём прикол: если у тебя приложение — простая «здравствуй-пока», и тебе не нужно ничего глобального, то можешь вообще не париться. Просто не указывай android:name в манифесте, и система сама возьмёт стандартный Application. Иногда это самый разумный ход, чтобы не создавать себе овердохуища проблем с жизненным циклом. Сам от себя охуеешь, когда начнёшь дебажить, почему твой синглтон инициализируется два раза. Так что думай головой, чувак.