检查SDK_INT是否足够,或者使用较新的android API是否需要延迟加载?为什么?



代码,例如:

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
        ed.apply();
    else ed.commit();

在Froyo:中产生警告

04-27 03:40:35.025:W/dalvikvm(3138):VFY:无法解析接口方法219:Landroid/content/SharedPreferences$Editor;。应用()V

但我知道,在旧设备中,这将是一个RuntimeError,它会中止应用程序(请参阅此处和此处)。

那么,这种有条件地调用新API(方法)的方式在API 8(Froyo)及更高版本中是否安全,或者在某些情况下仍然需要延迟加载?

达尔维克的哪些变化使这成为可能?

相关

  • 如果类实现了更新的接口,那么安卓推荐的安全支持更新api的方法就会出错。为什么
  • 安卓解决SDK_INT破解兼容性;这样可以吗
  • 安卓Dalvik验证在埃克莱尔

在Froyo 中产生警告

这完全正常。

但我知道,在旧设备中,这将是一个RuntimeError,它将中止应用程序

对于Android 1.x,是的。

这种有条件调用新API(方法)的方式在API 8(Froyo)和以上是否安全

是的。

达尔维克的哪些变化使这成为可能?

当遇到未识别的符号时,它不再"快速失败",而是等待在执行语句时再次尝试解决它。通过检查SDK_INT并确保该语句未被执行,您不会崩溃。

最新更新