DexClassLoader 刷新问题
2016-04-07 21:04
162 查看
遇到一个坑,
复现条件:
1、DexClassLoader加载上某个APK或jar
2、更新上面的APK或JAR,再次通过DexClassLoader 加载(文件名和dex释放路径保持和上次一致)
3、显式调用GC或系统触发GC时闪退
存在于4.X的系统中。
产生原因,当DexClassLoader实例化后,后将释放后的dex加载到dexpathlist,如存在则会进行对比,当两次加载的同路径、同文件名dex文件内容不一致时,则会打印警告Log,通知dex bad,进而gc时发生错误。
解决方案,在进程生命周期内如需要更新dex,请将源APK或JAR命名成不一样的,不要简单覆盖。或将dex输出目录设为不同。
复现条件:
1、DexClassLoader加载上某个APK或jar
2、更新上面的APK或JAR,再次通过DexClassLoader 加载(文件名和dex释放路径保持和上次一致)
3、显式调用GC或系统触发GC时闪退
存在于4.X的系统中。
产生原因,当DexClassLoader实例化后,后将释放后的dex加载到dexpathlist,如存在则会进行对比,当两次加载的同路径、同文件名dex文件内容不一致时,则会打印警告Log,通知dex bad,进而gc时发生错误。
解决方案,在进程生命周期内如需要更新dex,请将源APK或JAR命名成不一样的,不要简单覆盖。或将dex输出目录设为不同。
相关文章推荐
- 机器学习的路径和职业规划(转)--作为学习过程的参考
- 这些小工具让你的Android 开发更高效
- eclipse 简介
- 线程间同步方式总结
- Tapestry原则
- c语言数据结构(4)
- Java Switch支持的类型问题
- 游戏开发人文管理(18)
- dll导出函数
- FlashFXP破解版下载
- hdu 1516(编辑距离+记录路径)
- NYOJ 305-表达式求值【模拟】
- springmvc bean初始化
- 剑指Offer 面试题3 二维数组中查找
- FZU 1078 计算循环冗余码(基础题+模拟)
- 安装tomcat时出错:failed to install tomcat7 service问题的解决方法
- Python的PyMySQL“批量”插入性能优化
- Windows多线程同步系列之二-----关键区
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- 阻塞非阻塞与异步同步问题