0

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

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

  1. 启动 nonExclusiveTransaction

  2. 我想清除数据库中的所有表(搜索已删除、更新和创建的记录很慢。)

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

  4. 提交事务

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

4

1 回答 1

0

您可以通过调用获取对 ContentProvider 实现的引用

acquireContentProviderClient(authority)

看看这个答案

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

于 2014-09-05T14:51:15.150 回答