Foreground MediaBrowserService уничтожается при выходе из приложения - PullRequest
0 голосов
/ 29 марта 2019

Я следую руководству по Android , чтобы использовать MediaBrowserServiceCompat в приложении медиаплеера, но служба закрывается при выходе из приложения.

    <service android:name=".media.PlaybackService">
        <intent-filter>
            <action android:name="android.media.browse.MediaBrowserService" />
        </intent-filter>
    </service>

При запуске приложения служба создана правильно. На нажатой кнопке вызывается mediaController.transportControls.play() и после этого вызывается метод onPlay() из моего класса обратного вызова сеанса. Внутри onPlay() служба запускается: context.startService(Intent(context, MediaBrowserServiceCompat::class.java)) (также пробовал startForegroundService для Oreo и выше) и устанавливается на передний план: this@PlaybackService.startForeground(SERVICE_ID, notificationBuilder?.build()). Создан канал уведомлений для API Oreo Nad.

На данный момент уведомление запущено, и я вижу службу на переднем плане, выполнив команду:

$adb shell dumpsys activity services PlaybackService
(...)
isForeground=true foregroundId=1 foregroundNoti=Notification(channel=MyChannelId pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x62 color=0xff000000 category=transport actions=1 vis=PUBLIC)
(...)

Пока все работает нормально, но когда я нажимаю кнопку «домой», я ожидаю, что служба останется запущенной, но вместо этого вызывается метод onDestroy() моего класса MediaBrowserServiceCompat. После возвращения в приложение и повторного запуска сервиса, он не устанавливается на передний план (также нет уведомлений).

Я использую единственный вызов startService в своем приложении и удаляю каждый вызов на stopSelf и stopForeground для тестирования.

По API 28, 26, 22 и 18 я получаю тот же результат.

Я также пытался вернуть START_STICKY из onStartCommand().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...