在 Android 的 运行 时间创建数据库

Creation of databases at run time in Android

我正在为我的应用程序使用 DataProvider 来处理 CRUD 操作。现在 DataProvider 使用 SQLiteOpenHelper 嵌套内部 class。 CRUD 操作的所有定义都在 DataProvider 本身内部定义,SQLiteOpenHelper class 负责创建数据库,比如 abc.db 并定义两个表说 table1table2。现在,当用户登录到该应用程序时,会创建数据库(如果不存在则显然会创建),并通过使用 ContentResolver 查询和 CursorLoader 加载到列表中来显示用户的数据。这部分我已经实现了。

问题出现在多用户场景中。假设用户决定注销并使用另一个帐户登录或注册一个新帐户,由于保留了先前用户的数据,因此先前的数据也会加载到 ListView and/or 其他视图中获取数据从数据库。根据我的逻辑,这可以通过为同一设备上的每个新用户创建新的数据库实例来避免。但是由于 ContentProvider 在 Activity 的 onCreate() 之前初始化数据库,我发现这很难实现。关于如何实施它有什么想法吗?

因为我找不到其他替代方法,所以我相信维护一个 user_id 列是确保多用户可用性不受干扰的唯一方法。我已经实现了相同的功能,并使用 user_id=? 和当前登录的用户作为 user_id 参数向所有查询添加了一个额外的 WHERE 子句。在 运行 时间创建数据库的想法,即使可能,至少对于我的问题陈述来说可能不是必需的。