Android-сервис onCreate вызывается несколько раз без вызова onDestroy - PullRequest
12 голосов
/ 27 августа 2011

В моем приложении я использую сервис для связи с нашим сервером.Служба порождает несколько потоков очереди сообщений для решения задач с разными приоритетами.

Эта модель использовалась около года без особых проблем.Однако недавно я обнаружил, что onCreate моего класса обслуживания вызывается несколько раз.onDestroy никогда не вызывается между двумя onCreate вызовами.Поэтому я не получил возможности убить существующие темы.Как только это происходит, в службе появляются дубликаты потоков.

Единственное, что я изменил, - это запуск службы, так как служба переднего плана - это подпись пользователя в приложении.Мне интересно, могут ли проблемы вызвать сервис переднего плана.

Есть идеи?

Ответы [ 3 ]

12 голосов
/ 16 октября 2011

У меня была такая же проблема, когда мой сервис использовал тот же процесс с действиями (по умолчанию). но больше никаких проблем, когда я заставил свой сервис использовать другой процесс. Я отредактировал свой AndroidManifest.xml, как показано ниже ... (добавлен атрибут android: process )

<service android:name="kr.co.pkbio.binoo.CacheFileManagerService" android:process=":kr.co.pkbio.binoo.service"/>
<service android:name="kr.co.pkbio.binoo.ActivityStackManagerService" android:process=":kr.co.pkbio.binoo.service"/>

см. http://developer.android.com/guide/topics/manifest/service-element.html для информации.

0 голосов
/ 27 ноября 2017

Это может стать полезным для кого-то. У меня была такая же проблема при сохранении карты через пакет в методе onSaveInstanceState в одном из моих действий. Я полагаю, поскольку карта содержала ссылки на объекты, которые использовались в других частях приложения (одним из них был мой сервис) каждый раз, когда я оставлял указанное действие, мой сервис запускался снова и снова.

Я предполагаю, что это махинации с ОС Android.

0 голосов
/ 28 сентября 2011

У меня была точно такая же проблема, когда я имел дело со службой Bluetooth (проблема возникла во время разработки).Когда я отключил свое устройство и отключил ADB, это больше не повторилось, а onCreate вызывался только один раз.Я предполагаю, что это какая-то ошибка, потому что это происходит время от времени.Но, может быть, у вас немного другая проблема ...

...