Android Lesson 24. Application.

Класс Application — это класс-синглтон, создающийся один раз при запуске приложения перед созданием всех активностей и определяющий глобальное состояние всего приложения. В своем приложении вы можете создать собственный класс-наследник Application, что позволит вам:

  • контролировать состояние приложения
  • следить за использованием некоторых общих ресурсов, которые необходимы различным компонентам приложения
  • определять поведение приложения в случае изменения конфигурации устройства
  • определять поведение приложения в условиях дефицита памяти

Давайте для начала создадим свой подкласс Application:

Метод onCreate() будет вызван системой до старта всех активностей или сервисов. Для того, чтобы использовать вашу реализацию класса Application, нужно зарегистрировать ее в манифесте, прописав имя класса внутри тега <application> :

Для использования класса Application вы можете определить статический метод доступа, который вернет вам его экземпляр. Поэтому добавим сюда еще немного кода:

В классе Application содержится также еще несколько интересных методов, которые вы можете переопределить в своем конкретном случае:

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

Разделяемые ресурсы.

Отдельно я бы хотел поговорить про глобальные данные. Многим классам приложения могут понадобиться объекты для работы с базами данных, всевозможные фабрики, настройки приложения, представленные в виде объекта класса SharedPreferences и так далее. Многие разработчики начинают захламлять класс Application подобным кодом (ОСТОРОЖНО ПЛОХОЙ КОД!):

Так не нужно делать! Класс Application представляет глобальное состояние вашего приложения. Не надо превращать его в какую-то непонятную фабрику объектов. Не говоря уже о том, насколько плохо глобальные данные сказываются на удобстве сопровождения кода. В этом случае гораздо лучше было бы воспользоваться каким-нибудь фреймворком для внедрения зависимостей (читай Dagger 2) или создать собственную базовую реализацию возможностей DI.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *