自定义类加载/重写android原生类



主要目标是用我自己的实现覆盖Android系统类(Activity, View等)。

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

实现了用于自定义类加载的ClassLoader,可以加载非系统类(自定义类)。

但是当我尝试加载活动与我的实现-它不加载,因为ClassLoader已经有这个类在它的缓存:

/**
 * Returns the class with the specified name if it has already been loaded
 * by the virtual machine or {@code null} if it has not yet been loaded.
 *
 * @param className
 *            the name of the class to look for.
 * @return the {@code Class} object or {@code null} if the requested class
 *         has not been loaded.
 */
protected final Class<?> findLoadedClass(String className) {
    ClassLoader loader;
    if (this == BootClassLoader.getInstance())
        loader = null;
    else
        loader = this;
    return VMClassLoader.findLoadedClass(loader, className);
}

我如何改变类装入器注入我自己的类而不是系统?

我从一篇博客文章中找到了这个解决方案。我知道这是相当违反堆栈溢出政策,张贴一个链接,但文字太大,无法传输。

的想法是写一些C代码覆盖底层类加载机制,从而覆盖方法的执行方式。

一旦一个类被RootClassLoader加载,它就不能被再次加载,除非它先被卸载。但是,卸载类是一个由DVM自动管理的过程。我也被同样的问题困扰着。

相关内容

  • 没有找到相关文章

最新更新