一般问题: 是否可以使用ClassLoader替换预先加载的(通过系统,例如在Android的%android%/ frameworks / base / preloaded-classes 文件中找到)类?
具体: 我试图在我的应用程序中创建WebView之前使用DexClassLoader替换android.net。*中找到的类。我可以得到一个Class对象,但getMethods()例如给了我一个我希望在未修改/原始类实现中的数组。这是由于preloaded-classes系统吗?
基本设置&伪代码:
我可以提供有关我正在使用的设置和代码的更多详细信息。
答案 0 :(得分:8)
不,你不能。 WebView是引导类路径的一部分,因此也是基类加载器的一部分。没有什么可以使它在另一个类加载器中使用类。实际上,它已经被加载并链接到它甚至在你的应用程序启动之前使用的类(作为zygote进程预初始化的一部分)。