我有一个巨大的XML文件(超过20 Mb),我无法更改其格式。它代表DB。在固定的时间段内,它可以更改,我必须更新设备上所有已更改的数据。
我正在使用SyncAdapter通过ContentProvider将大量数据从XML传输到SQLite。 我无法使用applyBatch(),因为我无法将所有数据保存在内存中,我想使用以下方法:
启动nonExclusiveTransaction
我想清除DB中的所有表格(搜索已删除,已更新和创建的记录很慢。)
使用SAX解析器解析XML并在出现行时立即插入
提交交易
我找不到在ContentProvider之外开始和提交事务的方法。我应该从20 Mb XML文件中寻找另一种在ContentProvider中保存记录的方法吗?
答案 0 :(得分:0)
您可以通过调用
来获取对ContentProvider实现的引用acquireContentProviderClient(authority)
之后,只需将acquireContentProviderClient转换为自定义ContentProvider的对象,并调用开始和结束事务的方法。