我有一个SQLite数据库,它在我的应用程序中收到了一些重要的用处。它是从访问:Jellybean中的Android SQLite数据库事务/锁定更改
- 各种活动,经由ASyncTasks将数据加载到所述UI(SELECT语句只)
- 几个后台进程(仅其中之一可以一次运行),其做很多插入/更新
我调用getWritableDatabase()一次,并在任何地方使用它。每个后台进程都使用IMMEDIATE(即非锁定)事务,这些事务将其中一些事务从几分钟加速到几秒钟。
这一切都工作完美前jellybean;后台进程具有事务的速度优势,但这并未阻止Activites通过ASyncTasks加载数据。
Post-Jellybean,当事务正在进行时,GUI的每个ASyncTask加载数据都被阻塞,因此通常不会返回几秒钟。这导致导航缓慢和令人沮丧。我已经隔离了对rawQuery数据库调用的阻塞。
我无法找到指定确切的任何文档什么杰利贝恩改变,不是被弃用的几种方法等 - http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#isDbLockedByOtherThreads() - 与像评论“不再有数据库锁的概念,所以此方法始终返回false “。
有没有简单的方法来模仿前软糖豆的行为?
谢谢,但我已经在使用ICS及更高版本的AsyncTask.THREAD_POOL_EXECUTOR。在这种情况下,记录将rawQuery调用隔离为阻塞程序。 – pennas 2013-04-27 09:32:19