ExoPlayer释放后仍占用内存

问题描述 投票:0回答:1

在我的应用程序的主要活动中,我向用户展示了许多卡片。当他单击其中任何一个时,会打开一个包含

ViewPager2
的片段。 viewPager2 内的片段每个都包含一个
ExoPlayer
,并在恢复时播放相关视频。

当用户单击后退按钮时,必须关闭该片段并释放其所有子级(包括 viewPager2 及其片段和 exoPlayers)。为了释放 exoPlayers,我在 viewPager2 片段的

OnDestroyView()
中使用以下代码:

@Override
public void onDestroyView() {
    super.onDestroyView();

    try {
        if (player != null && listener != null) {
            player.removeListener(listener);
            player.release();
            player = null;
        }

        if (playerView != null)
            playerView.setPlayer(null);

        dashMediaSource = null;
        progressiveMediaSource = null;
        playerView = null;
        listener = null;
    } catch (Exception ignored) {
    }
}

之后,我运行 Android Studio profiler 来检查应用程序堆,我注意到一些与 exoPlayer 相关的对象仍在内存中:

现在的问题是我在释放内存,特别是 exoPlayers 时犯了错误吗?如果不是,为什么这些对象仍然在 RAM 中以及如何删除它们?

android android-fragments heap-memory exoplayer android-viewpager2
1个回答
0
投票

我也有同样的问题 https://github.com/androidx/media/issues/1113 我想也许player.release不是为了释放内存

© www.soinside.com 2019 - 2024. All rights reserved.