2013-04-23 2 views
1

Я пытаюсь понять, могу ли я динамически перезагрузить существующий класс/нагрузку в новом классе в Dalvik vm, работающем на Android. Поиск в Интернете дает мне несколько смешанные ответы:перезагрузка динамического класса в dalvik на Android

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? И работает ли он точно так же, как и vs Sun, может быть, кроме того, что Dalvik загружает файлы .dex и их нужно упаковывать в банку? Существуют ли ограничения на платформе Android для загрузки классов? Если есть официальная документация Dalvik по этому поводу, это было бы здорово.

ответ

2

В приведенной ниже статье android-developers показано, как использовать подход «плагин» для загрузки классов в Dalvik с помощью DexClassLoader.

Способ, которым он должен работать, заключается в том, что, если больше нет ссылок на ClassLoader или на любые классы, загруженные из него, сами классы могут быть собраны в мусор. На практике текущая версия Dalvik (Android 4.2 «Jellybean») не поддерживает разгрузку классов, поэтому классы должны остаться.

Вы можете определить новый DexClassLoader и загрузить новую версию этих классов, но вы пропустите предыдущую копию. Это может быть или не быть проблемой в зависимости от того, как часто вы ожидаете загрузить новый набор классов и насколько они велики.