Android 上带有 SQLite 的 C++ 后端 - 主应用程序和小部件未同步

C++ backend with SQLite on Android - main app and widget not synced

提问人:Martin Perry 提问时间:10/27/2023 更新时间:10/27/2023 访问量:25

问:

我在 Android 上有 C/C++ 应用程序,可以通过 .该应用程序有一堆可用的小部件。当用户添加小部件时,它会使用对 的不同调用打开自己的数据库实例。基本上,我有两个来自两个不同进程的数据库连接。它们中的每一个都打开与以下标志的连接sqlite3_open_v2sqlite3_open_v2

我的初始化数据库方法如下所示:

sqlite3* dbInit(const char* filePath) {

    sqlite3_shutdown();

    int threadSafe = sqlite3_threadsafe();

    if (threadSafe == 1){
         sqlite3_config(SQLITE_CONFIG_SERIALIZED);
    }
    
    sqlite3 *db = nullptr;
    sqlite3_open_v2(filePath, &db, SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX | SQLITE_OPEN_READWRITE, nullptr);

    return db;
}

该实例是类中的包装器,使用 (一个在应用程序中,一个在小部件中)。dbshared_ptr

现在的问题是,在添加小部件时,可能会丢失一些信息,因此当用户更新数据时,用户会被重定向到应用程序,从而导致数据库更改(我通过执行选择和打印数据来确认这一点)。 然后,用户使用后退按钮并返回到小组件设置。但是,尝试从数据库读取数据会导致与打开应用程序之前相同的结果。没有数据。

有没有某种缓存机制,使数据不会写入数据库文件? 或者相反,运行相同的选择将导致从某些缓存查询中读取?

安卓 C SQLite

评论


答: 暂无答案