我在 Android 中使用 SQLiteOpenHelper 调用setWriteAheadLoggingEnabled(true);
基本上我每次都做一堆网络同步(每个都在他们自己的线程中,他们在他们的线程中调用下一个onPostExecute
)所以我想把它们都放在一个事务中,所以我打电话beginTransactionNonExclusive()
,在完成所有工作后我setTransactionSuccessful()
和最后阻止我调用 `endTransaction()'
但问题在于,在我的一些同步中,我需要从 db 读取一些行并将它们发布到服务器,所以我必须database.rawQuery(queryString, null);
使用select
as 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
为了什么吗?
也许我应该解释在主线程(启动事务)中执行选择查询没有问题,但是从另一个线程中选择会导致场景!