У меня есть приложение (активность) для Android, которое также имеет соответствующую службу. Служба запускается по активности и должна запускаться непрерывно, даже когда активность остановлена. Когда действие снова запущено, он может привязываться к службе и запрашивать ее.Действия с Android, вызвавшие сбой службы из-за фрагментации кучи
Иногда действие уничтожается и создается ОС. Это не должно влиять на вещи, деятельность должна быть просто воссоздана и снова сможет привязываться к службе. Это в основном работает.
Однако ...
Я обнаружил, что как куча Dalvik VM и родную куча не является уплотнением и, следовательно, постоянно не увеличивается в размерах до активности переполнении памяти и аварий (даже хотя общий объем памяти использование на самом деле постоянное, а не утечка). Это намного усугубляется разрушением и воссозданием активности, поскольку во время процесса создания много распределений.
Это довольно много гарантий, что действие может потерпеть крах после нескольких перезапусков. Это меня не сильно беспокоит, но потом происходит то, что служба также вылетает из-за того, что она является частью одного и того же приложения. Служба содержит некоторые важные данные, которые затем теряются во время сбоя.
Меня интересуют любые предложения относительно того, как решить эту проблему?
Есть ли способ отделить услугу от действия (чтобы при сбое в работе это также не привело к сбою службы), но все же есть служба и активность в одном приложении?
Я мог бы сохранить данные службы, но для этого потребуется много доступов к БД и это не способствует экономии батареи.
мне нужна услуга, которая началась как и оценка, и я на самом деле назвать unbindService(). Я думаю, проблема заключается в том, что, поскольку служба все еще работает (которая предназначена), текущая куча остается активной. Когда активность перезапускается, она использует ту же кучу, что и сервис, который к настоящему времени серьезно фрагментирован. – chris
@chris. Вы можете проверить свою гипотезу, указав значение ['android: process'] (http://developer.android.com/guide/topics/manifest/service-element.html#proc) для службы в вашем манифест. Это приведет к тому, что служба будет работать отдельно от ваших приложений. –