首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止exoplayer后台播放视频

停止exoplayer后台播放视频
EN

Stack Overflow用户
提问于 2020-11-23 02:48:45
回答 2查看 219关注 0票数 0

我正在使用exoplayer播放回收站中的视频。我从firebase中检索视频并在exoplayer .But中播放,我面临的问题是所有的视频都在后台同时播放,结果弄得一团糟。此外,它还消耗了大量的数据。如果一旦视频播放完毕,就不会再开始了。我怎样才能阻止他们在后台播放。以下是我的代码

代码语言:javascript
复制
val uri = Uri.parse(contentDTOs[p1].videourl)
    val view = viewholder.findViewById<SimpleExoPlayerView>(R.id.detailviewitem_video_contents)
    val exoplayer= ExoPlayerFactory.newSimpleInstance(context,trackSelector)
    val datasourcefactory = DefaultHttpDataSourceFactory("exoplayer")
    val extractorsFactory=DefaultExtractorsFactory()
    val media = ExtractorMediaSource(uri,datasourcefactory,extractorsFactory,null,null)
    view.player = exoplayer
    exoplayer.prepare(media)
    exoplayer.playWhenReady = true
    val loopingSource = LoopingMediaSource(media)
    exoplayer.playWhenReady = true
    exoplayer.prepare(loopingSource)

override fun onPause() {
    super.onPause()
    exoplayer.stop()
}
override fun onStop() {
    super.onStop()
    exoplayer.stop()
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-23 02:54:15

尝试移动将playWhenReady = true设置为onResume()的行。不过,在onResume()中使用.play()而不是playWhenReady = true可能更安全(对于您的用例来说错误较少)。

票数 0
EN

Stack Overflow用户

发布于 2020-11-23 03:09:34

你应该释放你的播放器。对于release exoPlayer:

代码语言:javascript
复制
private void releasePlayer() {
    if (player != null) {
        player.release();
        player = null;
    }
}

并从生命周期方法调用releasePlayer方法,如下所示:

代码语言:javascript
复制
@Override
public void onPause() {
    super.onPause();
    if (Util.SDK_INT < 24) {
        releasePlayer();
    }
}

@Override
public void onStop() {
    super.onStop();
    if (Util.SDK_INT >= 24) {
        releasePlayer();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64958119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档