gpt4 book ai didi

android - 异步任务和 Sqlite

转载 作者:行者123 更新时间:2023-11-30 03:49:26 26 4
gpt4 key购买 nike

我有一项服务在设备连接到互联网时运行。它从 sqlite 中获取数据,然后上传到服务器上。列表 fragment 已填充数据库中的数据。

由于我有服务,我收到诸如“数据库已关闭”“数据库未打开”之类的错误。我的 dbHelper 对象是静态的。我在将访问数据库的每个方法的开头调用 SQLiteDatabase db = this.getWritableDatabase();。和 db.close() 在每个方法的末尾。

我应该只在 onDestroy() 中关闭 db.close() 吗? ...这会解决问题还是有其他方法?

最佳答案

首先,如果你想关闭一个数据库,你必须检查它是否是isOpen()

现在,一般来说,您的 SQLiteOpenHelper 实现应该是一个单例并覆盖 close() 方法:

@Override
public synchronized void close() {
mOpenConnections--;
if (mOpenConnections == 0) {
super.close();
}

}

其中 mOpenConnections 是一个成员,它保存通过 SQLiteOpenHelper 建立的连接数。每次有人打开数据库时,该成员都应该递增。

@Override
public synchronized void onOpen(SQLiteDatabase db) {
super.onOpen(db);
// increment the number of users of the database connection.
mOpenConnections++;
}

然后当你需要关闭数据库时使用SQLiteOpenHelper.close()方法。

这应该可以解决您所有的问题。

关于android - 异步任务和 Sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14394476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com