在我的案例中如何在Android中存储用户状态

时间:2011-09-13 09:28:21

标签: android sqlite

我问这个问题,因为我想确定哪个是在我的Android应用程序中存储用户“登录”/“已注销”状态的最佳方式。

这是我正在做的事情。在我的应用程序中,我连接到服务器,发送他的用户名和密码,如果一切正常,它返回给我好。所以现在我希望能够在我的应用程序中保存用户登录状态,因为我需要更改内容,具体取决于用户是否登录。

另一件事是我需要能够保存用户的登录状态,因此下次启动应用程序时他将自动登录。

任何建议或想法是最好的方法吗?

我对互联网进行了一些研究,并找到了几种方法:

  1. 扩展android.app.Application
  2. 的MyApplication类
  3. SharedPreference
  4. 或者也许是SQLite

5 个答案:

答案 0 :(得分:1)

我使用静态类或SharedPreference - 它很简单,而且很有效。 SQLite不是好方法(在我看来)

答案 1 :(得分:1)

您的选项SharedPreference在这种情况下是完美的,因为您只需存储布尔值,并且您将在应用中经常访问以更改内容。

答案 2 :(得分:1)

当您的应用失去焦点时可能有很多原因,例如按下主页按键来电等,但无论发生什么情况,您的当前onPause的{​​{1}}方法被调用,所以您需要的是 -

  1. 覆盖每项活动的Activity方法
  2. 使用onPause保存应用程序的状态

答案 3 :(得分:1)

将状态存储在设备上(使用SharedPreferences或SQLite)的问题是用户可以操作它。因此,如果您只是在SQLite-Database中存储“isLoggedIn”,则可以操作此条目using dpms(例如)。

因此,如果你需要存储状态,你应该使用Application - 类(这也可以被操纵,但是这样做更难)。如果用户关闭了应用程序,则会销毁状态变量,因此下次打开应用程序时需要进行登录。

为了便于使用,您可以存储用户名和(如果用户需要)密码。

此外,如果您有一个用于检查用户登录数据是否正确的Web服务,为什么不使用例如OAuth来验证服务器上的用户并提供内容从中?这基本上会使您的应用程序成为纯粹的“客户端”。

答案 4 :(得分:1)

SharedPreference是在时间方面访问单个值的最佳选择,与sql lite相比,我认为这是正确的。