基本上,这就是我正在做的事情:
if (Integer.valueOf(Build.VERSION.SDK) >= 9) {
editor.apply();
} else {
editor.commit();
}
但为什么它只适用于API 7或更高版本?我的应用已宣布支持最低API 3,但在使用java.lang.VerifyError加载时崩溃,说明无法找到apply()方法。
此方法仅适用于Android 2.1(API级别7)及更高版本。如果您支持1.6(API级别4),则editor.apply()调用必须包装在静态类中。目前,很少有应用程序必须支持旧版本的Android,因此我不会为此提供示例。
(参考:http://simonvt.net/2012/02/07/what-api-level-should-i-target/)
在这种情况下,我的应用程序是否应该完全取消对API 3的支持?
答案 0 :(得分:1)
在这种情况下,我的应用程序是否应该完全取消对API 3的支持?
您至少应该放弃对API Level 3和4的支持,因为这样可以大大简化您的代码,而且现在大约有零人使用这些设备。使用Android 2.0(API Level 5),这样的事情的向后兼容性变得更加简单,因为不再需要你引用的内容。
然后,请勿使用Build.VERSION.SDK
,更不用说将其自行转换为Integer
。引用the documentation:
此级别在API级别4中已弃用。使用SDK_INT可以轻松将其作为整数。
答案 1 :(得分:0)
您可以安全地将你的minSdk设置为9.然后你会覆盖大部分设备(超过99%)并且在保持兼容性方面省去了很多麻烦。
如果您选择仅定位80%的设备API 16是一个安全且更舒适的选择。
来源:https://developer.android.com/about/dashboards/index.html