1

Androidで実行されているDalvik vmで、既存のクラスを動的にリロード/新しいクラスにロードできるかどうかを理解しようとしています。オンラインで検索すると、いくつかの複雑な答えが得られます。

Sun VM でできること、Dalvik VM (Android の VM) でできないことは何ですか?

Android/dalvikでJavaクラスを動的にロードする方法は?

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でそれが可能かどうか誰かが確認できますか? また、Dalvik が .dex ファイルにロードされ、それらを jar にパッケージ化する必要があることを除けば、Sun の vm とまったく同じように機能しますか? クラスのロードを行うための Android プラットフォームに制限はありますか? これに関する公式の Dalvik ドキュメントがあれば、それは素晴らしいことです。

4

1 に答える 1

2

リストしたandroid-developersの記事では、「プラグイン」アプローチを使用して Dalvik にクラスをロードする方法を示していますDexClassLoader

動作するはずの方法は、 への参照がなくなった場合、ClassLoaderまたはそこからロードされたクラスがなくなると、クラス自体をガベージ コレクションできるようにすることです。実際には、Dalvik の現在のバージョン (Android 4.2 "Jellybean") はクラスのアンロードをサポートしていないため、クラスは残ります。

DexClassLoaderこれらのクラスの新しいバージョンを定義してロードすることもできますが、以前のコピーがリークされます。これは、新しいクラスのセットをロードする頻度とそれらの大きさに応じて、問題になる場合とそうでない場合があります。

于 2013-04-23T21:34:46.017 に答える