Как остановить запуск службы после того, как пользователь перестанет просматривать приложения. Android

У меня есть следующий код в каждом из 5 действий моего приложения. Я хотел, чтобы сервис работал, связанный с этими пятью действиями. Это будет играть музыку в фоновом режиме. Однако, когда пользователь уходит от любого из этих пяти действий, Служба должна быть уничтожена. Используя приведенный ниже код, я могу получить его так, чтобы музыка воспроизводилась в фоновом режиме при навигации между действиями. но Сервис продолжает работать после выхода из приложения. Как лучше всего решить эту проблему? Как насчет некоторых творческих идей.

Я поместил это сообщение Toast в метод onDestroy службы, чтобы я мог сказать, когда служба остановлена.

 Toast.makeText(this, "My Service Destroyed", Toast.LENGTH_LONG).show();

Я никогда не вижу всплывающих сообщений, когда я покидаю приложение. Другие всплывающие сообщения показывают, что служба запущена.

@Override
public void onPause() {
    super.onPause();
    unbindService(serviceConnection);
}

@Override
public void onResume() { 
    //After a pause OR at startup
    super.onResume();
    //add this to the onResume of the activity
    //  startService(new Intent(this, AudioService.class));
    bindService(new Intent(this, AudioService.class), 
                  serviceConnection, Context.BIND_AUTO_CREATE);

}

1 ответ

Решение

Согласно документации здесь:

Несколько клиентов могут связываться с сервисом одновременно. Когда клиент завершает взаимодействие со службой, он вызывает unbindService() для отмены привязки. Если к услуге не привязаны клиенты, система уничтожает службу.

Так что, возможно, вы упускаете некоторую привязку в одном из ваших занятий. Вы можете проверить это, распечатав журнал в методах onBind и onUnbind вашего сервиса.

Другие вопросы по тегам