Android开发之SQLite插入数据优化

今天,我们来讲讲如何对Android 开发中请求完数据,在本地客户端存放一些缓存信息遇到的问题?

首先,讲讲遇到的问题,外国人的代码不是那么好改,毕竟不是自己写的而且还没有注释和App的开发文档,只有一步一步的看了。

主要的展现出来的效果是这样的:这是一个类似于口袋办公的软件,而且需要实现离线后信息自动更新,这势必我们需要在本地存些数据到SQLite中去已达到效果。当刚进入软件时,我们要网络请求数据以及存放数据到数据库SQLite中,总3000条数据左右,一共加载了大概6min左右。如果对于用户的你,刚进入软件,就要等个5min左右的时间去加载数据,心都凉了半截,下次我肯定不用这款软件,什么玩意啊?这极大地使用户的体验效果变差。然后我进入Android开发程序中,打断点调试了一下,跟别看看Api数据请求所用的时间和数据存储的时间。网络请求是一部分,数据存储也是一小部分,但都得优化。在后台人员那看了一下,Api操作数据比较复杂,我们所要的字段是从4张表分别取出来的,也就是对数据库进行了四次操作然后汇聚成一张我们所要的东西。3000条数据就是3000*4=12000次操作,现在想想是要么多时间,5分钟,这是数据库当初没建好的表现,这与我无关,我们只需要在插数据这方面进行自己的优化。对,刚看老外的代码和我正常想法也是一样,一条一条的存入数据库中,也许操作的数据少,没啥区别,但是数据一多,客户端插入数据这块就受不了了。重复操作3000次数据库,那我们有什么解决方式呢?  借鉴前面Api取数据的经验,操作数据库的次数变多了,时间也就变长了。那么,我们可以这样做啊,减少操作数据库的次数,这不就加快了数据。

思路:

1.网络请求获取数据 (获得的是一个json字符串)

2.用gson变成单个对象

3.定义一个maxlength为1000的数组

4.把单个对象一个一个存入数组中

5.当单个对象下标%maxlength就重新开辟一个数组存放对象  如果是2956条数据的话,那就是存放到3个数组中,也就是操作三次数据库

也就是这么写

JSONArray array=data,getJSONArray("data");

ArrayList<JsonArray> arrays=new ArrayList<>();

JsonArray newarray=null;

for(int i=0;i<array.length();i++){

int maxlength=1000;

if(i%maxlength){

array=new JsonArray();

arrays.add(newarray);

}

newarray.put(array.getjsonobject(i));

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值