ContentProvider 批量写入造成系统大量gc

2020-09-03  本文已影响0人  alanBans
gc过程

可以看到,单表批量写入82208条数据。

ContentProvider写入后,app造成了jvm的大量gc,并且阻塞了UI线程。

解决办法

1.使用事务

重载实现contentProvider $ applyBatch() 时,使用事务

事务可以将多次的写入集合到一次事务当中。提高效率

事务

2.延迟或不发送数据更新(ContentResolver.notifyChange)

applyBatch内部也时循环调用insert方法,加入insert中写有contentResolver.notifyChange逻辑时,将会造成大量的内存消耗。

方法:

1.只通知频率不高且无关业务的表更新

2.insert中加入是否正在批量插入标志符判断,当applybatch执行到最后时(期间记录数据uri),之后才执行通知

上一篇 下一篇

猜你喜欢

热点阅读