Ответ 1
Это происходит, когда ОС Android уничтожает Activity
и обнаруживает, что ServiceConnection
по-прежнему привязан к работающему Service
, поэтому вам нужно отменить привязку сервиса перед уничтожением вашего Activity
Я пишу службу для своего Android-приложения, и я пытаюсь понять, как работает механизм привязки. Если я привяжу свою службу в onCreate к активности, но я не отвяжу ее в onStop или onDestroy, я получаю ошибку:
android.app.ServiceConnectionLeaked: Service com.google.ipc.invalidation.ticl.android.AndroidInvalidationService has leaked ServiceConnection com.googl
e.i[email protected]4177f8f8 that was originally bound here
Итак, мой вопрос: в чем проблема с утечкой соединения, что я предотвращаю, отперев мой сервис?
Это происходит, когда ОС Android уничтожает Activity
и обнаруживает, что ServiceConnection
по-прежнему привязан к работающему Service
, поэтому вам нужно отменить привязку сервиса перед уничтожением вашего Activity
Обычно ваше приложение является единственным приложением, которое может получить доступ к вашему Сервису (или использовать его для него). Если вы уничтожаете приложение, пока эта Служба все еще работает, то у этого сервиса больше нет цели. Он будет существовать в памяти, потребляющей ресурсы, но ничего не делая. Отключая или останавливая службу, когда вы закончите, вы возвращаете эти ресурсы, чтобы их могли использовать другие приложения.
Подумайте о ребенке, который распространяет свои игрушки через комнату, а затем уходит. Все остальные в доме (родители, братья и сестры) не имеют для них никакого смысла и должны обойти все. Игрушки просто в пути. Если ребенок убирает их, то каждый может использовать комнату для чего угодно.
Надеюсь, что это поможет!
Услуги все еще работают даже после закрытия активности. Поэтому вам нужно развязать ресурс в onStop или onDestroy.