Bri*_*ham 1 android backwards-compatibility
对于我的应用程序,我有一个自定义实现SharedPreferences.
在API级别9中,apply方法已添加到SharedPreferences.Editor界面中.
但是,VerifyError如果我将该方法添加到我的实现并尝试使用它,Android 1.6会抛出一个.
以向后兼容的方式使这项工作的最佳方法是什么?
编辑:
我应该澄清我的难题.在我切换到目标Gingerbread之前,我的实现SharedPreferences.Editor没有包含该apply方法.切换目标后,由于我的实现中缺少该方法,因此停止编译.
添加该方法的实现修复了编译问题,但又添加了一个新问题:Android 1.6甚至不会加载该类,抛出一个VerifyError.即使我发现错误,我的自定义实现也永远不会加载到1.6.
到目前为止,我最好的想法是使我自己的接口与SharedPreferences和SharedPreferences.Editor相同,并实现它们.当然,这需要在整个代码中进行彻底的更改,所以我尽量避免使用它.
如果您愿意放弃Android 1.x支持,您可以将其置于if ()测试中,类似于:
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD) {
editor.apply();
}
else {
editor.commit();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果你真的需要支持回到Android 1.6,那么你需要在一个只在新API设备上加载的类中隔离新的API代码,即所谓的"条件类加载"技术.
这是一个示例项目,演示如何使用此技术解决您的问题.
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |