使用ContentProvider进行连续交易

时间:2014-05-05 19:39:58

标签: android android-sqlite android-contentprovider android-syncadapter android-xmlpullparser

我有一个巨大的XML文件(超过20 Mb),我无法更改其格式。它代表DB。在固定的时间段内,它可以更改,我必须更新设备上所有已更改的数据。

我正在使用SyncAdapter通过ContentProvider将大量数据从XML传输到SQLite。 我无法使用applyBatch(),因为我无法将所有数据保存在内存中,我想使用以下方法:

  1. 启动nonExclusiveTransaction

  2. 我想清除DB中的所有表格(搜索已删除,已更新和创建的记录很慢。)

  3. 使用SAX解析器解析XML并在出现行时立即插入

  4. 提交交易

  5. 我找不到在ContentProvider之外开始和提交事务的方法。我应该从20 Mb XML文件中寻找另一种在ContentProvider中保存记录的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过调用

来获取对ContentProvider实现的引用
acquireContentProviderClient(authority)

Look at this SO answer

之后,只需将acquireContentProviderClient转换为自定义ContentProvider的对象,并调用开始和结束事务的方法。