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