のようなシステム クラスのバイトコードandroid.os.Looper
は単なるスタブです。たとえば、android.os.Looper.loop()
fromandroid.jar
には次のバイトコードが含まれます。
public static final void loop();
Code:
0: new #2; //class java/lang/RuntimeException
3: dup
4: ldc #3; //String Stub!
6: invokespecial #4; //Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
9: athrow
しかし、AOSP では、メッセージ ディスパッチを実行する実際のソース コードを確認できます (「参考文献」を参照AOSP_ROOT/frameworks/base/core/java/android/os/Looper.java
)。では、このクラスは Android システムによって正確にどのように処理されるのでしょうか? システムを dex ファイルにコンパイルするときに実際のコードにパッチが適用されandroid.jar
ますか?それとも Dalvik VM 内で実行時に行われますか?