我应该在insert()和bulkInsert()中使用beginTransaction()和endTransaction()吗?

时间:2016-08-09 18:17:52

标签: android performance android-sqlite android-contentprovider bulkinsert

我正在使用一个Android应用程序,我正在使用Content Provider。我重写了 insert() bulkInsert()方法。

我将在不同的场景中使用 insert() bulkInsert()。 我知道 bulkInsert()在内部使用 insert()

我需要事务是原子的。我应该在中使用 beginTransaction() endTransaction() 插入 bulkInsert

1 个答案:

答案 0 :(得分:0)

当您插入批量数据时,使用

非常重要
BeginTransaction();
SetTransactionSuccessful();
EndTransaction();

因为如果你不这样做,SQLite本身将使用隐式事务包装每个查询。通过使用BeginTransaction()和EndTransaction(),您可以提高性能。有关详细信息,请阅读https://medium.com/@JasonWyatt/squeezing-performance-from-sqlite-insertions-971aff98eef2

当您只使用一条记录时,您可以忽略BeginTransaction()和EndTransaction()。

类似的帖子 beginTransaction(), endTransaction(), and setTransactionSuccessful(). What exactly do they do?