gpt4 book ai didi

android - 前台 MediaBrowserService 在应用退出时被终止

转载 作者:行者123 更新时间:2023-12-03 21:04:18 30 4
gpt4 key购买 nike

我正在关注 Android guide在媒体播放器应用程序中使用 MediaBrowserServiceCompat,但该服务在应用程序退出时被销毁。

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

在应用程序启动服务正确创建。按下按钮 mediaController.transportControls.play()被调用,之后 onPlay()调用我的 session 回调类中的方法。内部 onPlay()服务已启动: context.startService(Intent(context, MediaBrowserServiceCompat::class.java)) (也尝试了 startForegroundService 用于 Oreo 及更高版本)并设置为前景: this@PlaybackService.startForeground(SERVICE_ID, notificationBuilder?.build()) .创建奥利奥和更高 API 的通知 channel 。

现在通知已启动,我可以通过发出命令看到服务在前台:

$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() .

最佳答案

肯定是你的MediaBrowser连接是唯一保留 MediaBrowserService继续并关闭该连接会导致 MediaBrowserService被摧毁。
就我而言,我决定在创建 MediaBrowser 之前创建服务。 :

// Create the media browser service
Intent intent = new Intent(application, MusicService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
}
else {
context.startService(mixerIntent);
}

// Create connection with the service
mediaBrowser = MediaBrowserCompat(
context,
ComponentName(requireContext(), MusicService::class.java),
connectionCallbacks,
null
)
不要忘记:一旦服务被创建,服务必须调用它的 startForeground五秒钟内的方法。

关于android - 前台 MediaBrowserService 在应用退出时被终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55420923/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com