У меня есть приложение для Android (действие), которое также имеет соответствующий сервис. Служба запускается действием и должна работать непрерывно, даже когда действие остановлено. Когда действие начинается снова, оно может связываться со службой и запрашивать его.
Иногда действие разрушается и создается ОС. Это не должно влиять на вещи, активность должна быть просто воссоздана и иметь возможность снова привязываться к сервису. Это в основном работает.
Однако ...
Я обнаружил, что и куча виртуальной машины Dalvik, и собственная куча не компактируются и поэтому постоянно увеличиваются в размерах до тех пор, пока не закончится память и не произойдет сбой (даже несмотря на то, что общее использование памяти фактически постоянно и не течет). Это значительно усугубляется уничтожением и повторным созданием действия, поскольку в процессе создания выполняется много выделений.
Это в значительной степени гарантирует, что активность завершится после нескольких перезапусков. Это меня не сильно беспокоит, но в результате происходит сбой службы, поскольку она является частью одного и того же приложения. Служба содержит некоторые важные данные, которые затем теряются во время сбоя.
Меня интересуют какие-либо предложения относительно того, как решить эту проблему?
Есть ли способ отделить службу от действия (чтобы при сбое действия она также не вызывала сбой службы), но при этом иметь службу и действие в одном приложении?
Я мог бы сохранить служебные данные, но для этого потребовалось бы много обращений к БД, что не способствует экономии батареи.