ExoPlayer 停止在后台播放

ExoPlayer stops playing in background

我有一个应用程序保留了 ExoPlayer 实例的全局实例,以促进后台的音频流。 打开很多应用程序后,音频停止播放。

情况如下:

但是,当您在最后一步后打开十几个或更多应用程序时,ExoPlayer 有时会停止播放。 我的猜测是发生内存清理,因此 ExoPlayer 被释放。我试图从日志中获取更多信息,但到目前为止帮助不大。

android.app.Service 中保留对 ExoPlayer 的引用没有什么不同。

我正在测试的设备是 Android 5.1.x 的 Nexus 5,但其他设备也会出现此问题。

我在 ExoPlayer documentation 页面、Whosebug 或 Google 上都找不到解决方案。有谁知道防止ExoPlayer停止播放的正确方法吗?

为了确保 Service 尽可能保持活动状态而不被系统杀死,您需要确保将其作为 foreground service 启动。

这意味着将有一个通知通知用户活动服务,以便他可以知道。因此,您必须使用相应的通知启动服务。这是文档中的示例:

Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
            System.currentTimeMillis()); 
Intent notificationIntent = new Intent(this, ExampleActivity.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
notification.setLatestEventInfo(this, getText(R.string.notification_title),
            getText(R.string.notification_message), pendingIntent); 
startForeground(ONGOING_NOTIFICATION_ID, notification);