当播放器暂停且应用程序被终止时,ExoPlayer 通知重新出现
ExoPlayer notification re-appearing when player is paused and App is killed
我在使用 exoplayer 的 PlayerNotificationManager 显示玩家通知时遇到了一个非常奇怪的问题。我正在使用以下代码在前台显示通知:
class AudioPlayerService : LifecycleService() {
private val notificationListener = object : PlayerNotificationManager.NotificationListener {
override fun onNotificationPosted(
notificationId: Int,
notification: Notification,
ongoing: Boolean
) {
super.onNotificationPosted(notificationId, notification, ongoing)
if (ongoing)
startForeground(notificationId, notification)
else
stopForeground(false)
}
}
override fun onCreate() {
super.onCreate()
playerNotificationManager = PlayerNotificationManager(
this,
CHANNEL_ID,
NOTIFICATION_ID,
descriptionAdapter,
notificationListener
).apply {
setFastForwardIncrementMs(0)
setRewindIncrementMs(0)
setUseNextAction(false)
setUsePreviousAction(false)
setUseStopAction(false)
setUseChronometer(false)
}
//...
}
override fun onDestroy() {
releasePlayer()
super.onDestroy()
}
//...
}
当正在播放音乐且应用被终止(从最近清除)、通知持续存在且音乐继续播放时,它按预期工作。
但是如果暂停音乐并清除通知(应该清除,因为没有播放音乐),然后关闭应用程序,它会显示带有暂停按钮的不可关闭通知(不应显示),但暂停按钮会显示不工作,音频也不播放。
当应用程序被杀死且播放器处于暂停状态时,如何防止通知显示?
我能够通过在我的服务中覆盖 onTaskRemoved 来解决这个问题。
override fun onTaskRemoved(rootIntent: Intent?) {
super.onTaskRemoved(rootIntent)
if (player.isPlaying == false)
stopForeground(true)
}
当用户移除App Task时调用该函数。我们可以在这里检查我们是否需要我们的服务来保持 运行.
我在使用 exoplayer 的 PlayerNotificationManager 显示玩家通知时遇到了一个非常奇怪的问题。我正在使用以下代码在前台显示通知:
class AudioPlayerService : LifecycleService() {
private val notificationListener = object : PlayerNotificationManager.NotificationListener {
override fun onNotificationPosted(
notificationId: Int,
notification: Notification,
ongoing: Boolean
) {
super.onNotificationPosted(notificationId, notification, ongoing)
if (ongoing)
startForeground(notificationId, notification)
else
stopForeground(false)
}
}
override fun onCreate() {
super.onCreate()
playerNotificationManager = PlayerNotificationManager(
this,
CHANNEL_ID,
NOTIFICATION_ID,
descriptionAdapter,
notificationListener
).apply {
setFastForwardIncrementMs(0)
setRewindIncrementMs(0)
setUseNextAction(false)
setUsePreviousAction(false)
setUseStopAction(false)
setUseChronometer(false)
}
//...
}
override fun onDestroy() {
releasePlayer()
super.onDestroy()
}
//...
}
当正在播放音乐且应用被终止(从最近清除)、通知持续存在且音乐继续播放时,它按预期工作。
但是如果暂停音乐并清除通知(应该清除,因为没有播放音乐),然后关闭应用程序,它会显示带有暂停按钮的不可关闭通知(不应显示),但暂停按钮会显示不工作,音频也不播放。
当应用程序被杀死且播放器处于暂停状态时,如何防止通知显示?
我能够通过在我的服务中覆盖 onTaskRemoved 来解决这个问题。
override fun onTaskRemoved(rootIntent: Intent?) {
super.onTaskRemoved(rootIntent)
if (player.isPlaying == false)
stopForeground(true)
}
当用户移除App Task时调用该函数。我们可以在这里检查我们是否需要我们的服务来保持 运行.