开发者社区 问答 正文

热修复的原理

热修复的原理

展开
收起
请回答1024 2020-04-10 12:45:05 862 分享 版权
1 条回答
写回答
取消 提交回答
  • 我们知道Java虚拟机 —— JVM 是加载类的class文件的,而Android虚拟机——Dalvik/ART VM 是加载类的dex文件,

    而他们加载类的时候都需要ClassLoader,ClassLoader有一个子类BaseDexClassLoader,而BaseDexClassLoader下有一个

    数组——DexPathList,是用来存放dex文件,当BaseDexClassLoader通过调用findClass方法时,实际上就是遍历数组,

    找到相应的dex文件,找到,则直接将它return。而热修复的解决方法就是将新的dex添加到该集合中,并且是在旧的dex的前面,

    所以就会优先被取出来并且return返回。

    2020-04-10 12:45:11
    赞同 展开评论
问答地址: