Создание собственной реализации класса Application дает возможность:
• контролировать состояние приложения;
• передавать объекты между программными компонентами;
• поддерживать и контролировать ресурсы, которые используются в не- скольких компонентах одного приложения.
Вместе с процессом программы создается экземпляр класса Application, который вы описали и зарегистрировали в манифесте. Исходя из этого ваш класс Application по природе синглтон (singleton) и должен регистрироваться соответствующим образом, предоставляя доступ к методам и свойствам.
Наследование и использование класса Application
В листинге 3.7 показан каркас для наследования класса Application и ре- ализации его в качестве синглтона.
Листинг 3.7. Каркас для класса Application
import android.app.Application;
import android.content.res.Configuration;
public class MyApplication extends Application {
private static MyApplication singleton;
// Возвращает экземпляр данного класса
public static MyApplication getInstance() {
return singleton;
}
@Override
public final void onCreate() {
super.onCreate();
singleton = this;
}
}
Создав новый класс Application, нужно зарегистрировать его внутри тега <application> в манифесте:
<application android:icon="@drawable/icon"
android:name="MyApplication">
[… Вложенные в манифест теги …]
</application>
При запуске приложения создается экземпляр вашей реализации класса Application. Добавляйте новые свойства для хранения программного со- стояния и глобальных ресурсов, чтобы иметь возможность получить к ним доступ из компонентов приложения:
MyObject value = MyApplication.getInstance().getGlobalStateValue(); MyApplication.getInstance().setGlobalStateValue(myObjectValue);
Такой подход особенно эффективен при передаче объектов между сла- босвязанными частями вашей программы, а также для контроля за общими ресурсами и состоянием приложения.
Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).