【问题标题】:dynamic class reloading in dalvik on AndroidAndroid上dalvik中的动态类重新加载
【发布时间】:2013-04-16 02:02:00
【问题描述】:

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

What can you not do on the Dalvik VM (Android's VM) that you can in Sun VM?

How to load a Java class dynamically on android/dalvik?

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

http://larshamren.blogspot.com/2012/02/android-dynamically-loading-classes.html

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

【问题讨论】:

    标签: java android jvm dalvik


    【解决方案1】:

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

    它应该工作的方式是,如果没有更多对ClassLoader 的引用或从它加载的任何类,则可以对这些类本身进行垃圾收集。在实践中,当前版本的 Dalvik(Android 4.2 “Jellybean”)不支持类卸载,因此类会保留。

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

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2011-03-04
      相关资源
      最近更新 更多