Java Android上dalvik中的动态类重新加载
我试图了解是否可以在Android上运行的Dalvik vm中动态地重新加载现有类/加载新类。在线搜索给了我一些复杂的答案: 有人能确认是否可以在Android上这样做吗?它的工作方式是否与Sun的vm完全相同,可能只是Dalvik加载了.dex文件,并且它们需要打包在一个jar中?在Android平台上进行类加载有任何限制吗?如果有关于这方面的官方Dalvik文档,那就太好了。您列出的文章展示了如何使用“插件”方法在Dalvik中通过Java Android上dalvik中的动态类重新加载,java,android,jvm,dalvik,Java,Android,Jvm,Dalvik,我试图了解是否可以在Android上运行的Dalvik vm中动态地重新加载现有类/加载新类。在线搜索给了我一些复杂的答案: 有人能确认是否可以在Android上这样做吗?它的工作方式是否与Sun的vm完全相同,可能只是Dalvik加载了.dex文件,并且它们需要打包在一个jar中?在Android平台上进行类加载有任何限制吗?如果有关于这方面的官方Dalvik文档,那就太好了。您列出的文章展示了如何使用“插件”方法在Dalvik中通过DexClassLoader加载类 它的工作方式是,
DexClassLoader
加载类
它的工作方式是,如果不再有对ClassLoader
的引用或从中加载的任何类,那么这些类本身就可以被垃圾收集。实际上,Dalvik(Android4.2“Jellybean”)的当前版本不支持类卸载,因此这些类将继续存在
您可以定义一个新的DexClassLoader
并加载这些类的新版本,但会泄漏以前的副本。这可能是问题,也可能不是问题,这取决于您希望加载一组新类的频率以及它们的大小