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。
我已经使用 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。