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);
            }
        });
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,989评论 25 709
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,779评论 2 51
  • 大多数人都不喜欢周一的早晨,经过了一个周末的懒散,加上两天的懒觉,周一早晨起床一定是痛苦的。想想5天的工作或学习很...
    源媛阅读 140评论 0 0
  • 下午睡了半小时,一觉醒来,好舒服! 刚醒的时候,脑子一片空白,这个世界充满和平,没有任何忧愁和顾虑! 回过神来,一...
    若野蛮生长阅读 236评论 6 0
  • “最近过的怎么样?” “挺好的啊。” “什么时候回家过年?” “下个月。” “好,我有空就过去找你。” “不用啦,...
    心城啊阅读 335评论 0 0