代码,例如:
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
并确保该语句未被执行,您不会崩溃。