VideoView中的AudioManager造成的内存泄漏修复

        最近发现项目中启动页的VideoView播放完即使调用stopPlayback()仍无法释放内存。用MAT分析后知道它内部的AudioManager对Activity进行了强引用且生命周期超出了该Activity,导致该Activity无法回收,解决方案如下:

@Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(new ContextWrapper(newBase) {
            @Override
            public Object getSystemService(String name) {
                // 解决 VideoView 中 AudioManager 造成的内存泄漏
                if (Context.AUDIO_SERVICE.equals(name)) {
                    return getApplicationContext().getSystemService(name);
                }
                return super.getSystemService(name);
            }
        });
    }

你可能感兴趣的:(VideoView中的AudioManager造成的内存泄漏修复)