【问题标题】:Best way to release and reinitialize exoplayer in RecyclerView在 RecyclerView 中释放和重新初始化 exoplayer 的最佳方法
【发布时间】:2020-03-31 14:06:32
【问题描述】:

我有两个具有不同媒体源的 Exoplayer 实例。

目前

在初始化任一播放器之前。我正在检查是否有任何播放器连接到表面,如果是,则释放播放器并使用新操作符再次初始化

if(videoPlayerView.getPlayer() != null) {
             videoPlayerView.getPlayer().release();
             videoPlayerView.setPlayer(null);
 }

videoPlayerView 是我在 SimpleExoPlayer 中的 PlayerView

但是查看分离后的列表项变成黑色而不是再次播放。

【问题讨论】:

    标签: android-recyclerview release exoplayer2.x staggered-gridview


    【解决方案1】:

    我曾经和你做过类似的事情。你需要一个全局玩家池来管理玩家。你不需要每次都释放它。只需调用停止方法。切换视频时,只需重置源。让它立即播放没有黑,你需要准备。活动结束后,释放所有玩家。

    【讨论】:

    • 1.创建一个池管理器播放器,如 class ExoplayerPlayModel { bool isAvailable; // 这个播放器是否正在使用 bool hasPrepare; // 无论播放器是否已准备好 SimpleExoPlayer simpleExoPlayer; // 缓存播放器;字符串网址; // 媒体源 String keyId; // 用于查找 } 管理一个列表,如List,不超过5个 2.在manager中定义prepare,getPlayer方法 3.切换播放器时,只调用stop,不调用release,只有当你的activity调用 onDestroy,调用 release。
    【解决方案2】:

    我强烈建议您使用 Exoplayer 的单个实例,在首次使用时使用 init 并在活动或片段(基于您的用例)destroyed 时使用 releasedestroyed

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2018-03-09
      • 2011-11-24
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多