#android
На официальном сайте Android'a имеется статья, где рекомендуется сохранять объемные объекты (а точнее их ссылки) изActivity, на время пересоздания, в фрагменте (который не имеет UI и не пересоздается). Но я все же не могу понять: а почему нельзя использовать для тех же целей синглтоны? Получить его можно из любого экземпляра Activity (ссылки он, вроде как, тоже не теряет :)), так в чем же проблемы и почему это не является самым простым способом сохранения?
Ответы
Ответ 1
Можно в 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 в манифесте.Ответ 2
Можно и в Singleton сохранять. Они имеют ввиду хранить данные, которые нужны только конкретной активити. Если использовать Singleton, то вам придется следить, чтобы эти данные удалялись по уничтожению данной активити. А если использовать retain fragment то этого делать не надо будет.
Комментариев нет:
Отправить комментарий