我对Android API的内部工作感到困惑.
如果我的应用程序是针对Android 5.0编译的,则可以接受以下内容适用于运行Android 5.0及更高版本的设备:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
Run Code Online (Sandbox Code Playgroud)
但是,如果我在运行旧版Android的设备上运行它,这仍然有效.我的假设是该设备上的库没有变量的定义Build.VERSION_CODES.LOLLIPOP.那么当应用程序运行此代码时,如何在这些旧设备上解析变量?
Com*_*are 14
那么当应用程序运行此代码时,如何在这些旧设备上解析变量?
简单:没有变量.
Build.VERSION_CODES.LOLLIPOP是一个static final int.本javac-生成字节码将内联int当您参考值
Build.VERSION_CODES.LOLLIPOP,而不是做的查找在运行时该值.由于字节码包含int,因此您的APK包含int,因此您不依赖于设备的框架版本来提供int给您.
Build.VERSION.SDK_INT是不是一个static final int,因此,该值在运行时查找.
| 归档时间: |
|
| 查看次数: |
3700 次 |
| 最近记录: |