2016-02-08 5 views
4

У меня есть эта деятельность, которая начинается и связывается с сервисом:не onUnbind вызывается при связывании активности к работающей службе

@Override 
protected void onStart() { 
    super.onStart(); 

    Intent intent = new Intent(context, SoundService.class); 
    context.startService(intent); 
    context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); 
} 

и я отвязать по:

@Override 
protected void onStop() { 
    context.unbindService(serviceConnection); 

    super.onStop(); 
} 

служба продолжает работать даже после закрытия деятельности. Посмотрите на этот сценарий:

  1. активность запускает службу и связывается с его
  2. активность убит, служба продолжает работать, onUnbind() называется
  3. активность начинается снова, и связывается с запущенной службой
  4. активность убивают, onUnbind() является не называется :(

Почему onUnbind() не будет вызванный?

+0

Не могли бы вы проверить, что 'onStop()' вызывается? – tynn

+0

Почему и 'startService', и' bindService'? –

+1

return 'true' from' onUnbind' – pskink

ответ

2

возвращения true из onUnbind, в следующий раз, если вы звоните bindService снова будет называться не только onRebind, но и когда последние клиенты отключают и onUnbind будет вызываться системой

0

Как вы начали обслуживание? Вставьте этот код.

служба будет остановлена ​​только после того, как вы назвали unbindService()IF нет никаких других клиентов, подключенных к этой услуге И услуга была запущена с bind вызова с AUTO_CREATE. Если служба была запущена с startService() то служба не будет остановлена, пока служба не называет stopSelf() или андроид завершает его, чтобы освободить память

 Смежные вопросы

  • Нет связанных вопросов^_^