类似系统类的字节码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系统处理的呢?真正的代码是在将系统编译android.jar
成 dex 文件时修补的,还是在 Dalvik VM 的运行时发生的?