1

Я разрабатываю приложение, которое требует привязки Activity к Service. Я использую обычные bindService и unbindService. Тем не менее, я пытаюсь сохранить привязку с помощью изменений ориентации. Для этого я переопределяю onRetainCustomNonConfigurationInstance. Но я столкнулся с проблемами. Чтобы позвонить, unbind Я проверяю, заканчивается ли Activity, isFinishing() и работает нормально, но Exception забрасывается, пока не накололи ServiceConnection. Я не знаю, можно ли это обойти.Мобильное соединение Android через изменение ориентации

Моя главная проблема в том, если после поворота вызов unbind сделан, я получаю IllegalArgumentException с сообщением служба не зарегистрирована

Веду и отменяя оригинальный ServiceConnection, но он не работает.

Связывание сохраняется путем изменения ориентации, поскольку Fragment s прилагается к Activity, используя Service.

Есть ли все-таки исправить это? Или я должен сделать ServiceConnection в Fragment s тоже?

Благодаря

ответ

2

Вы получаете исключение ServiceConnection была утечка, потому что, когда вы пытались связать службу с serviceconnection объекта, вы использовали контекст активности. Таким образом, это создаст утечку при изменении ориентации устройства и вы сохраните ServiceConnection.

Чтобы избежать утечки, во время связывания и Несвязанность на службе в любом месте вашей деятельности, используйте контекст приложений (getApplicationContext()), это будет исправить вашу проблему и не будет течь в ServiceConnection

связывания :

getApplicationContext().bindService(new Intent(this, TestService.class), serviceConnection, BIND_AUTO_CREATE); 

развязывание:

getApplicationContext().unbindService(serviceConnection) 
Смежные вопросы