Убитый сервис Android и статические переменные - PullRequest
7 голосов
/ 17 ноября 2011

Использование Android 2.1+. У меня есть служба, которая время от времени убивается ОС (из-за нехватки памяти, я думаю).

Этот сервис поддерживает некоторые состояния, используя статические поля членов классов. Я ожидаю, что статические поля сохранят свои значения, несмотря на то, что служба прерывается и перезапускается ОС.

Но похоже, что так не бывает. После перезапуска статические переменные сбрасываются до значения по умолчанию. Это то, что должно произойти? Должен ли я использовать другой способ сохранить постоянное состояние, несмотря на уничтожение / перезапуск?

1 Ответ

7 голосов
/ 17 ноября 2011

Да, это то, что происходит, когда ваша служба убита. Программа извлекается из памяти, и когда она перезагружается в память, все значения по умолчанию для статических переменных предполагаются. Иными словами, байт-код вашей программы не может меняться от исполнения к выполнению.

Обычно считается плохим использование статических переменных для сохранения состояния. Попробуйте сохранить их в постоянном хранилище, например, в базе данных sqlite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...