关于Android VideoView导致的内存泄漏的问题
来源:互联网 发布:淘宝药店七乐康 假 编辑:程序博客网 时间:2024/06/05 08:11
今天在用leakcanary测试项目的时候,无意中在用VideoView播放本地视频时,出现内存泄漏问题,提示是AudioManager类出现的, 后面百思不得其解,因为代码中Context没有被长生命周期的所引用,为什么还会出现泄漏呢?后面通过google才发现原来是setVideoPath()导致的,VideoView内部的AudioManager
会对Activity持有一个强引用,而AudioManager
的生命周期比较长,导致这个Activity始终无法被回收,这个bug直到2015年5月才被谷歌修复。
后面也相应的找到了解决方法,需要重写如下方法
@Overrideprotected void attachBaseContext(Context newBase) { super.attachBaseContext(new ContextWrapper(newBase) { @Override public Object getSystemService(String name) { if (Context.AUDIO_SERVICE.equals(name)) return getApplicationContext().getSystemService(name); return super.getSystemService(name); } });}
就能完美解决此问题,不得不说谷歌真强大。
0 0
- 关于Android VideoView导致的内存泄漏的问题
- 关于Android VideoView导致的内存泄漏的问题
- 常见的导致Android内存泄漏问题
- 关于ExitInstance不执行,导致很多内存泄漏的问题
- Android:关于ListView的内存泄漏问题
- 再谈android内存泄漏—常见的八种导致 APP 内存泄漏的问题
- Android handler导致的内存泄漏
- Android Handler导致内存泄漏的解决方案
- Android AsyncTask导致的内存泄漏
- 关于内存泄漏的问题
- 关于内存泄漏的问题
- 关于内存泄漏的问题
- 关于Android中的内存溢出和内存泄漏的问题
- Android异常一、异步任务导致的窗口句柄泄漏问题(内存泄漏)
- 内存分配不成功导致内存泄漏的问题
- 关于Android handler内存泄漏问题的测试与解决
- 导致内存泄漏的原因
- ThreadLocal 导致的内存泄漏
- C# 如何读取配置Web.config中的数据
- RTMP集合消息详解
- android studio--调试---断点调试
- Android系统的版本号与API的对应表
- size_t ssize_t socklen_t 关系
- 关于Android VideoView导致的内存泄漏的问题
- 35. Search Insert Position
- markdown使用
- 版本控制工具——git
- Bundle Version String和Bundle Version 区别
- 使用MoveIt Setup Assistant进行配置
- JavaScript的数据类型有哪些?java的数据类型有int、string、map、list等
- linux忘记root密码远程配置,也许以后你用到
- 构造器的理解