最近客户反馈一个问题,说节目量很多的时候(超过1万),移动节目位置后保存的时候发的时间太久了。我测试了下,确实要很久,大概1分钟。查看代码,发现更新数据时是一条一条更新的,下面的代码就被执行了1万多下,从而导致很耗时间。
ContentValues srvValues = new ContentValues();
srvValues.put("chan_order", item.getServiceIndex());
srvValues.put("chan_num", item.getServiceIndex());
srvValues.put("default_chan_num", item.getServiceIndex());
getContentResolver().update(DVBClient.TABLE_SERVICE, srvValues,"db_id=" + item.getServiceDbId(), null);
后来在网上查阅,发现有批处理的方法,而且按照该方法,数据更新时间减少到了10秒左右,神奇啊!
更新数据批处理方法主要就是调用ContentProviderOperation类的newUpdate方法和ContentResolver类的applyBatch方法。
我的代码如下:
ContentResolver resolver = getContentResolver();
ArrayList<ContentProviderOperation> operations = new ArrayList&l