Я создаю новое приложение для Android, которое использует данные с сервера с помощью различных действий.
в настоящее время у меня есть 2 действия, основное из которых подключается к серверу и создает объект singleton (который является общим для всех действий), используя данные с сервера.
очевидно, у меня есть экземпляр данных, хранящихся в одноэлементном классе, и я получаю объект из статического метода.
Я знаю, что это не лучший способ реализовать общие данные между действиями - я могу передавать их через намерения (но я планирую создать еще 3-4 действия, которые используют одни и те же данные, так зачем передавать их, когда вы можете иметь их в статическом контексте, глобальном для приложения).
Эта реализация привела меня к следующей проблеме: когда пользователь переключается на другое приложение во время второго действия, а мое приложение какое-то время остается в фоновом режиме, Android освобождает память, используемую приложением, и когда возвращаясь к нему, я получаю исключение нулевого указателя при использовании одного из полей объекта singleton!
Я решил проблему, вернувшись к основному действию (если объект имеет значение null) для воссоздания данных, но это заставляет действие повторно подключаться каждый раз, когда оно уничтожается (это не оптимально, поскольку данные на сервере не сильно меняются). Я знаю, что мне нужно сохранять данные сервера при уничтожении и воссоздавать объект каждый раз, когда я возвращаюсь к действию, но это должно происходить при каждом действии, а данные составляют около 4-5 КБ, что означает, что их нужно записать в файл, и разбор занимает время (доступ к SD-карте телефона).
Я начинаю думать об использовании объекта Parcelable для обмена данными через намерения - я думаю, что Android может сохранять и восстанавливать данные намерений автоматически и оптимальным образом. (ссылка: http://bimbim.in/post/2010/09/27/Android-Passing-object-from-one-activity-to-another.aspx)
Вопрос в том, решат ли намерения мою проблему? Есть ли другие способы? Лучше и быстрее?
Спасибо!