0

我正在使用三星 Galaxy Tab 2 测试我的 Android 应用程序代码。我正在使用共享首选项在设备上存储用户名和密码。我正在与 Github 合作,因为这是一个团队项目。当我在旧版本的代码中将设置保存到共享首选项中,然后尝试使用新版本时,我得到一个空指针异常。当我卸载应用程序并使用较新版本时,不会发生这种情况。在这种情况下,一切似乎都运行良好。较新的版本有一些新的键值对存储在共享首选项中。有人可以让我知道为什么会发生这种情况以及我能做些什么来避免这种情况吗?

4

1 回答 1

0

SharedPreferences存储在设备上并在您更新应用程序时保留在那里。如果您在代码中更改密钥,则存储在那里的键/值对不会自动更新密钥。另一方面,卸载应用程序将删除所有应用程序设置,即您的SharedPreferences.

如果较新的版本查找使用新密钥存储的数据,如果它使用旧密钥存储,它将找不到任何内容并返回null。这很可能是您遇到的 NPE。

您可以检查两个密钥(如果存在则首选新密钥)并以这种方式保持与旧版本的兼容性。

除此之外,您应该始终期望以null安全的方式获取和处理它,因为用户可以随时清除应用程序设置。

于 2013-07-22T16:09:12.370 回答