请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于提前异步类加载

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

正在回答

1回答

同学你好!

第一个问题: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 回复 有任何疑惑可以回复我~
  • 提问者 全是甘货 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-03-02 01:33:45
  • 提问者 全是甘货 #2
    hello,老师,你好啊~
    请问你说的:Multidex完成之后,是不是指写在attachBaseContext的MultiDex.install(this);这句命令之后,可以进行异步类加载呢?
    回复 有任何疑惑可以回复我~ 2019-03-02 01:51:24
  • 随风绽放 回复 提问者 全是甘货 #3
    对的。
    回复 有任何疑惑可以回复我~ 2019-03-02 09:09:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信