提问人:Martin Perry 提问时间:10/27/2023 更新时间:10/27/2023 访问量:25
Android 上带有 SQLite 的 C++ 后端 - 主应用程序和小部件未同步
C++ backend with SQLite on Android - main app and widget not synced
问:
我在 Android 上有 C/C++ 应用程序,可以通过 .该应用程序有一堆可用的小部件。当用户添加小部件时,它会使用对 的不同调用打开自己的数据库实例。基本上,我有两个来自两个不同进程的数据库连接。它们中的每一个都打开与以下标志的连接sqlite3_open_v2
sqlite3_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;
}
该实例是类中的包装器,使用 (一个在应用程序中,一个在小部件中)。db
shared_ptr
现在的问题是,在添加小部件时,可能会丢失一些信息,因此当用户更新数据时,用户会被重定向到应用程序,从而导致数据库更改(我通过执行选择和打印数据来确认这一点)。 然后,用户使用后退按钮并返回到小组件设置。但是,尝试从数据库读取数据会导致与打开应用程序之前相同的结果。没有数据。
有没有某种缓存机制,使数据不会写入数据库文件? 或者相反,运行相同的选择将导致从某些缓存查询中读取?
答: 暂无答案
评论