Exoplayer 将在后台播放多长时间?

For how long will Exoplayer play in the background?

我已经使用 Exoplayer 播放了音频流。你可以看到下面的代码。我不是专业的 Android 开发人员,但我知道在 android 上,如果您想在后台 运行 进行某些操作,则必须使用服务。没想到这个播放器会在后台播放,但确实如此。我的问题是。这是否足以让播放器在后台正常工作,默认情况下 exoplayer 是否处理 bacground 模式,或者播放器会在一段时间后关闭。那么还有必要在后台做一个运行的服务吗?

private fun setUpPlayer(){
            val renderersFactory = DefaultRenderersFactory(this)
            val trackSelector = DefaultTrackSelector()
            exoPlayer = ExoPlayerFactory.newSimpleInstance(this, renderersFactory, trackSelector)
            val userAgent = Util.getUserAgent(this, "FOOBAR")
            val mediaSource = ExtractorMediaSource(Uri.parse(radioLink), DefaultDataSourceFactory(this, userAgent), DefaultExtractorsFactory(), null, null)
            exoPlayer.prepare(mediaSource)
            exoPlayer.playWhenReady = true
        }

您应该创建一个服务,因为您无法确保音乐会在后台继续播放。如果运行 其他在前台或正在使用服务的应用需要资源,android 操作系统会终止您的应用,您可以查看这篇文章了解更多信息Who lives and who dies? Process priorities on Android。 如果你让音乐播放的时间足够长,那么它会在应用被杀死后停止播放。

需要运行 exoplayer的服务,我在试用exoplayer时有过这方面的经验.首先 android 会破坏你的 activity 以及你的 exoplayer 实例。

按下后退键或在后台运行时,应用程序仍然可以播放,但最终会在几分钟后停止,因为 android 尝试释放资源。

实际上通过服务做事非常好,这样你就可以做很多事情而不用在你的 activity 主线程上做繁重的任务。

你只需要一个前台服务,它还需要一个特定频道的通知,你也可以做媒体风格的通知,这样你就可以通过通知控制你的播放,甚至在屏幕锁定时。

this 教程解释了如何使用服务

为什么需要服务(引自 article)?

You should only use a foreground service when your app needs to perform a task that is noticeable by the user even when they're not directly interacting with the app.

根据您的一条评论,似乎在开发过程中幸运的是 exoplayer 还活着,但我想说一旦您将应用程序部署到不同的设备上,您可能需要重新考虑使用 activity 或服务的方法对于 exoplayer。