首页 > 解决方案 > ExoPlayer 内存泄漏问题 - LeakCanary

问题描述

我在启动画面中发现了内存泄漏

它正在使用ExoPlayer在初始屏幕上播放资产文件夹中的视频。

LeakCanary出现在哪里 在此处输入图像描述 在此处输入图像描述

初始化播放器:

player = ExoPlayerFactory.newSimpleInstance(
                this,
                new DefaultTrackSelector(),
                new DefaultLoadControl()
        );
        videoView.setPlayer(player);
        DataSpec dataSpec = new DataSpec(Uri.parse("assets:///video.mp4"));
        final AssetDataSource assetDataSource = new AssetDataSource(this);
        try {
            assetDataSource.open(dataSpec);
        } catch (AssetDataSource.AssetDataSourceException e) {
            Timber.e(e.getLocalizedMessage());
        }
        DataSource.Factory dataSourceFactory = new DataSource.Factory() {
            @Override
            public DataSource createDataSource() {
                return assetDataSource;
            }
        };
        MediaSource mediaSource = new ExtractorMediaSource(
                assetDataSource.getUri(),
                dataSourceFactory,
                new DefaultExtractorsFactory(),
                null,
                null
        );
        player.setRepeatMode(Player.REPEAT_MODE_ALL);
        player.prepare(mediaSource, true, false);

xml:

  <com.google.android.exoplayer2.ui.PlayerView
            android:id="@+id/videoView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:resize_mode="zoom"
            app:use_controller="false" />

你能看出什么问题吗?泄漏在哪里?泄漏在哪里?:)

标签: androidmemory-leaksexoplayerexoplayer2.xleakcanary

解决方案


推荐阅读