【问题标题】:Stop exoplayer playing video in background停止 exoplayer 在后台播放视频
【发布时间】:2020-11-22 18:48:45
【问题描述】:

我正在使用 exoplayer 在 recyclerview 中播放视频。我从 firebase 检索视频并在 exoplayer 中播放。但我面临的问题是所有视频在后台同时播放并且搞砸了。它还消耗大量数据。如果一旦视频完成播放,它就不会重新开始。我怎样才能阻止他们在后台播放。这是我的代码

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()
}

【问题讨论】:

    标签: android kotlin exoplayer


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    private void releasePlayer() {
        if (player != null) {
            player.release();
            player = null;
        }
    }
    

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

    @Override
    public void onPause() {
        super.onPause();
        if (Util.SDK_INT < 24) {
            releasePlayer();
        }
    }
    
    @Override
    public void onStop() {
        super.onStop();
        if (Util.SDK_INT >= 24) {
            releasePlayer();
        }
    }
    

    【讨论】:

    • 不,兄弟,它仍然无法正常工作,我遇到了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多