0

我正在使用共享首选项编写登录功能。我使用 SharedPreferences.Editor::commit() 来存储用户名和密码;从 shared_prefs 读取它以检查登录。登录后,我 cd 到 /data/data/com.< my_package >/shared_prefs/ 并删除“shared_prefs”文件夹。问题是应用程序屏幕仍处于登录状态。我试图返回并重新启动应用程序,但它仍处于登录状态。手动删除“shared_prefs”是否会完全清除首选项?为什么我的应用程序仍处于登录状态?

4

1 回答 1

2

您不应该删除首选项文件夹。如果您这样做,则共享首选项的行为是未记录的。(即使您退出最后一个活动,该过程可能仍然存在,并且之前读取的首选项仍在内存中。)

如果要从共享首选项中删除特定值,请使用SharedPreferences.Editor.remove(String). 如果要清除所有值,请使用SharedPreferences.Editor.clear(). 在任何一种情况下,commit()您的更改都会使它们生效。

如果要将程序重置为其初始状态(就好像它从未运行过一样),请转到设置 -> 管理应用程序,打开您的应用程序,停止它(如果它正在运行),然后清除所有数据。

于 2012-06-26T02:21:44.063 回答