3

类似系统类的字节码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 的运行时发生的?

4

1 回答 1

3

android.jar您编译代码的对象仅包含具有公共(常量)字段和公共方法的公共类,但所有这些方法都不包含任何实现。所有具有其他返回类型的方法都会void抛出“存根!” RuntimeException.

具有实际实现的运行时库仅在电话设备或模拟器中与您的应用程序链接。

于 2012-04-08T17:50:55.330 回答