Страницы

Поиск по вопросам

пятница, 26 апреля 2019 г.

Почему нельзя сохраннять Activity в статическом объекте, при пересоздании

На официальном сайте 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 в манифесте.

Комментариев нет:

Отправить комментарий