关于提前异步类加载

来源:3-12 启动优化其它方案

全是甘货

2019-03-01

老师,你在课程里面提及,初始化优化手段,还包括可以提前加载异步类,方法是重写ClassLoader并让其具备打印类加载时类名的能力,从而得到异步类有哪些,提前加载它们。
第一,是否有相关文章谈及怎么改写和适配这个ClassLoader从而达到上述目的。
第二,请问提前是提前到什么时候呢?

写回答

1回答

随风绽放

2019-03-01

同学你好!

第一个问题:Hook掉系统的ClassLoader需要稍微具备点Java hook的知识,实际上就是反射重新设置值即可。这里给你找了篇文章你可以看下,有hook掉系统classloader的代码,还是比较好做的,而且和native hook不同,这个hook的兼容性问题非常少。https://www.cnblogs.com/ZhangXiangQian/p/5386029.html 

第二个问题:只要Multidex完成之后就可以异步类的加载了,不能在Multidex之前做是因为Multidex之前非主Dex的class还没有被加到classloader中,去访问的话肯定是会报错:ClassNotFound!

1
8
随风绽放
回复
全是甘货
注意这里sp的name要直接写,不要写成SPConstant这样的引用方式。
2019-03-03
共8条回复

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1696 学习 · 532 问题

查看课程