2015-08-12 2 views
0

В моем приложении я вставляю некоторые объекты управления oneton с помощью кинжала.Поля статических объектов становятся нулевыми, когда нажимается кнопка дома

Предположим, что один из этих менеджеров, скажем, myManager, хранит данные в списке, скажем myList. Также у меня есть класс BroadcastReceiver, скажем, myBroadcastReceiver, который вызывает один из методов myManager, например myMethod, когда он получает какие-то конкретные намерения.

Если я открываю приложение и жду, пока myList не будет инициализирован, а затем нажмите на дом, а после этого myBroadcastReceiver получит намерение и вызовет myMethod, myList будет null (хотя сам myManager не является нулевым).

Я не могу понять, если это вопрос естественного поведения андроида, или если я действительно ошибся, что это произойдет.

ответ

0

Я думаю, что ваш синглтон класс становится выгружен из-за нехватки памяти вам нужно сохранить этот список в onSaveInstanceState (Bundle outState) и получить то же самое в методе OnCreate

0

Вы можете либо реализовать «сохранить состояние» решение с использованием onSaveIntanceState, предоставляемые андроидом в вашей деятельности или услуге, или какой-либо компонент, который вы используете

Или вы можете сохранять свои данные локально в файле или даже лучше базу данных sqlite, которая может быть очень простой и простой в реализации.

И, сохраняя ваш список «в памяти» синхронизированным с местным хранилищем, вы никогда не потеряете никаких данных.

Просто используя ленивую загрузку, каждый раз, когда ваш список равен нулю, извлеките данные из локального хранилища.

Смежные вопросы