我正在使用Samsung Galaxy Tab 2测试我的Android应用程序代码。我使用共享首选项在设备上存储用户名和密码。我正在与Github合作,因为这是一个团队项目。当我在旧版本的代码中将设置保存到共享首选项中然后尝试使用更新的版本时,我得到一个空指针异常。当我卸载应用程序并使用较新版本时,这不会发生。在这种情况下,一切似乎都很好。较新版本的一些新密钥值对存储在共享首选项中。有人可以让我知道为什么会这样,我可以做些什么来避免这种情况?
答案 0 :(得分:0)
SharedPreferences
会存储在设备上并保留在那里。存储在那里的键/值对如果在代码中更改键,则不会自动更新键。另一方面,卸载应用程序将删除每个应用程序设置,即您的SharedPreferences
。
如果较新的版本查找使用新密钥存储的数据,则如果它与旧密钥一起存储将无法找到任何内容,并将返回null
。这很可能是您遇到的NPE。
您可以检查两个密钥(如果存在,则更喜欢新密钥)并保持与旧版本的兼容性。
除此之外,您应始终期望获得null
并以安全的方式处理它,因为用户可以随时清除应用设置。