gpt4 book ai didi

android - 跨多个 Android 版本实现 SharedPreferences

转载 作者:行者123 更新时间:2023-11-29 14:55:24 25 4
gpt4 key购买 nike

对于我的应用程序,我有一个 SharedPreferences 的自定义实现。

在 API 级别 9 中,SharedPreferences.Editor 接口(interface)中添加了 apply 方法。

但是,如果我将该方法添加到我的实现并尝试使用它,Android 1.6 会抛出一个VerifyError

使这项工作向后兼容的最佳方式是什么?

编辑:

我应该澄清我的难题。在我切换到目标 Gingerbread 之前,我的 SharedPreferences.Editor 实现不包括 apply 方法。切换目标后,由于我的实现中缺少该方法,它停止编译。

添加该方法的实现解决了编译问题,但增加了一个新问题:Android 1.6 甚至不会加载类,抛出一个VerifyError。即使我发现错误,我的自定义实现也永远不会在 1.6 上加载。

到目前为止,我最好的想法是让我自己的接口(interface)与 SharedPreferences 和 SharedPreferences.Editor 相同,然后实现它们。当然,这将需要对我的代码进行全面更改,因此我会尽可能避免这种情况。

最佳答案

如果您愿意放弃对 Android 1.x 的支持,您可以将其放入 if () 测试中,类似于:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD) {
editor.apply();
}
else {
editor.commit();
}

但是,如果您确实需要支持回 Android 1.6,则需要将新 API 代码隔离在一个类中,该类仅在新 API 设备上加载,即所谓的“条件类加载”技术。

Here is a sample project演示如何使用此技术解决您的问题。

关于android - 跨多个 Android 版本实现 SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com