Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 停止播放器在后台播放视频_Android_Kotlin_Exoplayer - Fatal编程技术网

Android 停止播放器在后台播放视频

Android 停止播放器在后台播放视频,android,kotlin,exoplayer,Android,Kotlin,Exoplayer,我正在使用exoplayer在recyclerview中播放视频。我从firebase中检索视频并在exoplayer中播放。但我面临的问题是所有视频都在后台同时播放,结果弄得一团糟。它还消耗大量数据。如果一旦视频完成播放,就不要重新开始。我怎样才能阻止他们在后台玩。这是我的密码 val uri = Uri.parse(contentDTOs[p1].videourl) val view = viewholder.findViewById<SimpleExoPlayerView&g

我正在使用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()
}
val uri=uri.parse(contentDTOs[p1].videourl)
val view=viewholder.findViewById(R.id.detailviewitem\u视频内容)
val exoplayer=ExoPlayerFactory.newImpleInstance(上下文,轨迹选择器)
val datasourcefactory=DefaultHttpDataSourceFactory(“exoplayer”)
val extractorsFactory=DefaultExtractorsFactory()
val media=extractoremiasource(uri、datasourcefactory、extractorsFactory、null、null)
view.player=exoplayer
exoplayer.prepare(媒体)
exoplayer.playwhenrady=true
val loopingSource=LoopingMediaSource(媒体)
exoplayer.playwhenrady=true
exoplayer.prepare(循环源)
覆盖暂停(){
super.onPause()
停止
}
覆盖桌面上的乐趣(){
super.onStop()
停止
}

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

您应该释放播放器。要发布exoPlayer:

private void releasePlayer() {
    if (player != null) {
        player.release();
        player = null;
    }
}
从生命周期方法中调用
releasePlayer
method,如下所示:

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

@Override
public void onStop() {
    super.onStop();
    if (Util.SDK_INT >= 24) {
        releasePlayer();
    }
}
@覆盖
公共无效暂停(){
super.onPause();
如果(Util.SDK_INT<24){
释放玩家();
}
}
@凌驾
公共void onStop(){
super.onStop();
如果(Util.SDK_INT>=24){
释放玩家();
}
}

我将如何使用.play()看看这个示例,那里使用了.play():很高兴能帮上忙no bro它还不能工作,我面临着这个问题