在android中执行事务时,有从api 11开始的beginTransaction()
和beginTransactionNonExclusive()
方法。
对于我来说,从文档中不太清楚我的应用程序是否只针对API11及以上设备,我应该对应用程序中的所有事务使用beginTransactionNonExclusive()
。有什么缺点吗?
还提到,如果我理解正确,要使beginTransactionNonExclusive()
正常工作,数据库必须启用预写日志记录。
我试着找一些关于这个的文章,但是我在google上找不到关于这个的任何东西,我发现this article看起来很棒,但是它是日语的。
非常感谢您在何时以及如何使用beginTransactionNonExclusive()
方面提供任何帮助。
最佳答案
我认为您应该将beginTransactionNonExclusive
与enableWriteAheadLogging
一起使用。
根据文件:
在数据库中启用预写日志记录是一个好主意
将由位于
同时。但是,预写日志使用的内存要多得多
因为有多个连接到
相同的数据库。所以如果一个数据库只被一个线程使用,
或者如果优化并发性不是很重要,那么请提前写
应禁用日志记录。]
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#enableWriteAheadLogging()