使用数据库进行会话管理

Use database for session management

我可以使用 table 中的列来检查用户是否已登录吗?

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

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

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

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

When user logs in I set value to 1. When he logs out I set to 0

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

我建议您使用 SharedPreferences 因为

SharedPreferences 是一个 key/value 存储,您可以在其中保存特定键下的数据。要从商店中读取数据,您必须知道数据的键。这使得读取数据变得非常容易。但是,存储少量数据很容易,存储和读取大型结构化数据也很困难,因为您需要为每个数据定义键,此外,除非您有一定的概念,否则您无法真正在数据中进行搜索命名键。

举一个 例子,SharedPreferences 对于存储用户首选项很有用,其中只有少数变量需要存储。另一方面,SQLite 更适合在有大量项目的地方存储数据,例如需要通过

搜索音乐库中的歌曲标题

检查SharedPreferences and SQLite