Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android上dalvik中的动态类重新加载_Java_Android_Jvm_Dalvik - Fatal编程技术网

Java Android上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加载类 它的工作方式是,

我试图了解是否可以在Android上运行的Dalvik vm中动态地重新加载现有类/加载新类。在线搜索给了我一些复杂的答案:

有人能确认是否可以在Android上这样做吗?它的工作方式是否与Sun的vm完全相同,可能只是Dalvik加载了.dex文件,并且它们需要打包在一个jar中?在Android平台上进行类加载有任何限制吗?如果有关于这方面的官方Dalvik文档,那就太好了。

您列出的文章展示了如何使用“插件”方法在Dalvik中通过
DexClassLoader
加载类

它的工作方式是,如果不再有对
ClassLoader
的引用或从中加载的任何类,那么这些类本身就可以被垃圾收集。实际上,Dalvik(Android4.2“Jellybean”)的当前版本不支持类卸载,因此这些类将继续存在

您可以定义一个新的
DexClassLoader
并加载这些类的新版本,但会泄漏以前的副本。这可能是问题,也可能不是问题,这取决于您希望加载一组新类的频率以及它们的大小