2

我在 Android 中使用 SQLiteOpenHelper 调用setWriteAheadLoggingEnabled(true);

基本上我每次都做一堆网络同步(每个都在他们自己的线程中,他们在他们的线程中调用下一个onPostExecute)所以我想把它们都放在一个事务中,所以我打电话beginTransactionNonExclusive(),在完成所有工作后我setTransactionSuccessful()和最后阻止我调用 `endTransaction()'

但问题在于,在我的一些同步中,我需要从 db 读取一些行并将它们发布到服务器,所以我必须database.rawQuery(queryString, null);使用selectas queryString 调用。一旦我的代码到达这里,我就开始在 logcat 中关注:

The connection pool for database '+data+data_package_db_file' has been unable to grant a connection to thread 3103 (AsyncTask #4) with flags 0x2 for 4.0010004 seconds.
Connections: 0 active, 1 idle, 1 available.

这不是setWriteAheadLoggingEnabled为了什么吗?

也许我应该解释在主线程(启动事务)中执行选择查询没有问题,但是从另一个线程中选择会导致场景!

4

0 回答 0