【问题标题】:Use database for session management使用数据库进行会话管理
【发布时间】:2016-02-09 05:08:35
【问题描述】:

我可以使用表中的列来检查用户是否已登录。

当用户登录时,我将值设置为 1。当他注销时,我设置为 0。我不想使用 SharedPreferences。是不是这样使用效率低下。

我首先使用了共享首选项。我在 sharedpreference 中设置用户名以及其他首选项,并在导航抽屉中显示用户名。当我在另一台设备上安装应用程序时,我认为甚至会安装 sharedpreference 文件,并且我看到在新设备中,用户名显示在 sharedpreference 文件中,尽管该用户在该设备数据库的表中不存在

【问题讨论】:

    标签: android sqlite android-studio android-sharedpreferences


    【解决方案1】:

    当用户登录时,我将值设置为 1。当他注销时,我设置为 0

    在这里,当您将值设置为 0 或 1 时,您必须每次都打开和关闭数据库,并且维护起来很麻烦。你必须每次检查它是什么标志。而在 SharedPreferences 中,它将是全局可访问且易于设置标志的。

    我建议你使用 SharedPreferences 因为

    SharedPreferences 是一个键/值存储,您可以在其中将数据保存在某个键下。要从存储中读取数据,您必须知道数据的密钥。这使得读取数据非常容易。但是,尽管存储少量数据很容易,但存储和读取大型结构化数据却很困难,因为您需要为每个数据定义键,而且您无法真正在数据中进行搜索,除非您有一定的概念命名键。

    举一个示例,SharedPreferences 可用于存储用户偏好,其中只有少数变量需要存储。另一方面,SQLite 更适合存储有大量项目的数据,例如需要搜索的音乐库中的歌曲标题

    检查SharedPreferences and SQLite

    【讨论】:

    • 我首先使用了 sharedpreferences。我在共享首选项中设置用户名以及其他首选项,并在导航抽屉应用程序中显示用户名。当我在另一台设备上安装应用程序时,我认为甚至会安装 sharedpreference 文件,并且我看到在新设备中,用户名显示在 sharedpreference 文件中,尽管该用户在该设备数据库的表中不存在
    • 您必须在 sharedpreferences 中维护标志。检查stackoverflow.com/a/35266669/2826147
    • 是的..我知道。但是当我在另一台设备上从 android studio 安装应用程序时发生的事情..包含我在前一个设备中注册的用户的用户名的 sharedpreference 文件存储在新设备中。但该用户未在新设备中注册。该手机的数据库中没有该用户的用户详细信息,但该用户名仍显示在应用程序中。
    • 如果我使用apk而不是从android studio安装来安装,也许这不会发生......或者apk也会包含sharedpreference......我自己很困惑。你能明白我的问题是什么吗?
    • 尝试使用签名的 apk 安装到其他设备,不会有 sharedpreference,但您必须清除 sharedpreference,如我上面评论中提到的那样
    【解决方案2】:

    对于这么小的事情,最好使用共享首选项而不是使用数据库。

    请参考:http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 2012-12-15
      • 2013-12-18
      • 1970-01-01
      • 2016-04-26
      • 2014-09-21
      • 2017-01-23
      • 1970-01-01
      相关资源
      最近更新 更多