На официальном сайте Android'a имеется статья, где рекомендуется сохранять объемные объекты (а точнее их ссылки) изActivity, на время пересоздания, в фрагменте (который не имеет UI и не пересоздается).
Но я все же не могу понять: а почему нельзя использовать для тех же целей синглтоны? Получить его можно из любого экземпляра Activity (ссылки он, вроде как, тоже не теряет :)), так в чем же проблемы и почему это не является самым простым способом сохранения?
Ответ
Можно в Singleton, с одной поправкой: надо использовать естественный синглтон Android'а класс Application, который в любом месте можно получить через getApplication(). Технически надо создать собственный класс:
public class MyApplication extends Application {
private MyData myData;
private static MyApplication me;
public MyApplication() {
me=this;
}
public static MyApplication getApplication() {
return me;
}
public MyData getMyData() {
return myData;
}
}
Теперь в любом месте можно вызвать:
MyApplication.getApplication().getMyData();
или через контекст (если не нравится)
((MyApplication )context.getApplication()).getMyData();
P.S. Надо не забыть задекларировать MyApplication в манифесте.
Комментариев нет:
Отправить комментарий