【问题标题】:Do Android version code constants work with older versions?Android 版本代码常量是否适用于旧版本?
【发布时间】:2014-02-17 19:11:01
【问题描述】:

我可以将 Android 版本代码常量用于较旧的 Android 运行时吗?例如,

if (android.os.Build.VERSION.SDK_INT >= 
   android.os.Build.VERSION_CODES.HONEYCOMB) ...

当首次定义此常量时,它是否会在运行 HONEYCOMB 之前运行 Android 操作系统的旧设备上运行而不会崩溃?假设我们用最新的 SDK 编译它?

【问题讨论】:

    标签: android versioning


    【解决方案1】:

    是的,这会起作用。

    原因是android.os.Build.VERSION_CODES.HONEYCOMBintandroid.os.Build.VERSION_CODES.HONEYCOMB 只是 11 的别名(int 等于 11),可以在 Eclipse 等 IDE 中看到:

    int android.os.Build.VERSION_CODES.HONEYCOMB = 11 [0xb]
    

    所以这将起作用,因为它只会检查 android.os.Build.VERSION.SDK_INT 是否大于或等于 11。

    【讨论】:

    • 如何在编译时转换为 int?我刚刚读到 Java 不支持别名。
    • @FD_ 仔细看,它实际上一个int。我假设它是某种与 APK 或其他东西打包在一起的 Android 变量。
    • 好的,我曾希望了解更多关于它的实际工作原理。
    • int 单独是不够的。 static final int 允许编译器在编译时内联值。
    【解决方案2】:

    是的,你可以。它之所以有效是因为int 的值是static final。编译器会在编译时将它们内联到字节码中。运行时不需要符号导入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多