【问题标题】:Handling multiple profiles in Android app在 Android 应用中处理多个配置文件
【发布时间】:2016-03-01 09:50:57
【问题描述】:

我有一个用户可以登录的应用程序,每个用户都有不同的个人资料。我们正在为每个配置文件维护单独的数据库、单独的共享首选项和不同的名称。每当我们切换配置文件时,我们都会从相应的 db/shared-preference 中获取数据。

是否有任何 API,例如为多个配置文件维护单个 db/shared-preference - 例如每个配置文件将具有单独的应用程序数据,因此我们无需为每个配置文件创建具有不同名称的单独共享首选项/db。每个配置文件都可以具有相同名称的 shared-preference/db。因此,每个配置文件都有自己的应用数据,但共享首选项/数据库名称相同。

我猜安卓中的账户会有单独的应用数据,但这里我们需要有单独的应用数据用于配置文件。

【问题讨论】:

  • 为什么需要单独的数据库?您可以将多个配置文件数据存储在单个数据库或单个表中。
  • @AmanGupta 每个配置文件都有很多表格和共享首选项。假设如果我将 profile_1 的 user_points 存储在共享首选项中,那么我需要为 profile_2 的 user_points 提供不同的名称。这适用于多个配置文件。与表的情况相同。对于同一件事,我需要手动为不同的配置文件提供不同的名称。
  • 好吧,也许我无法理解您的整个场景,但您不需要为每个配置文件创建单独的共享首选项。您可以在共享首选项中使用 HashSetJSON 来存储多个配置文件数据。
  • 我能想到的一个解决方案是,您可以为您的用户分配一个唯一的用户 ID,并将该用户 ID 用作他所有与个人资料相关的数据库的文件夹。对于 sharedprefs,您可以为名称添加前缀,例如 userid_point。甚至你可以创建一些帮助方法来自动执行此操作,例如 getPointPreference(userid)
  • @AmanGupta 我的重点是为多个配置文件创建具有相同名称的共享首选项或表格。

标签: android accounts profiles


【解决方案1】:

遗憾的是,这里没有捷径。

在您的数据库中,您需要在具有特定于配置文件的数据实体的每个表中为您的用户名/帐户名称(或者您正在识别配置文件)列一列。您对表的所有查询都需要在 WHERE 子句中包含配置文件名称,以获取该配置文件的数据。

在您的首选项中,您可以将配置文件名称附加到首选项键以使其成为该配置文件的首选项。在我的应用程序中,我创建了一个静态 getKey() 方法来获取当前用户名并将其附加到一个键,然后返回该键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多