是否检查SDK_INT还是使用较新的Android API需要延迟加载?为什么?

时间:2013-11-28 17:11:21

标签: android dalvik android-compatibility

代码如:

    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; .apply()V

但据我所知,在较旧的设备中,这将是一个RuntimeError,会中止应用程序(请参阅herehere)。

这种有条件地在API 8(Froyo)及以上版本中有条件地调用新API(方法)的方法是否仍然需要延迟加载?

Dalvik有什么变化使这成为可能?

相关

1 个答案:

答案 0 :(得分:4)

  

在Froyo发出警告

这是完全正常的。

  

但据我所知,在较旧的设备中,这将是一个会中止应用程序的RuntimeError

对于Android 1.x,是的。

  

这种有条件地在API 8(Froyo)及以上版本中有条件地调用新API(方法)的方法

  

Dalvik有什么变化使这成为可能?

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

相关问题