Build.VERSION_CODES怎么可能有效?

时间:2014-11-15 01:33:53

标签: java android

我对Android API的内部工作感到困惑。

如果我的应用是针对Android 5.0编译的,则可以接受以下内容适用于运行Android 5.0及更高版本的设备:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)

但是,如果我在运行旧版Android的设备上运行它,这仍然有效。我的假设是该设备上的库没有变量Build.VERSION_CODES.LOLLIPOP的定义。那么当应用程序运行此代码时,如何在这些旧设备上解析变量?

1 个答案:

答案 0 :(得分:14)

  

那么当应用程序运行此代码时,如何在这些旧设备上解析变量?

简单:没有变量。

Build.VERSION_CODES.LOLLIPOPstatic final int javac 生成的字节码会在您引用时内联intBuild.VERSION_CODES.LOLLIPOP,而不是在运行时查找该值。由于字节码包含int,因此您的APK包含int,因此您不依赖于设备版本的框架来向您提供int

Build.VERSION.SDK_INT 一个static final int,因此在运行时查找值。