Loading... #### 为何会碰到这种问题 > 一般APP在初始化的时候会从服务器获取一些基础数据,但是这些数据一般都不会很大,最多几百KB的数据而已,但是我最近碰到初始化数据有35M之多,直接导致APP解析超大json的时候崩溃掉. #### 解决办法 * 一般来说这种大量的基础数据是会直接存在本地的,但是此次处理的APP中确实需要从服务器拉取相应的初始化数据,为了解决这个问题,我尝试过使用fastJson来序列化json(项目中使用的时Gson序列化),但是毫无疑问不行 * 我们只能通过精简json的体量和分页处理数据来处理. #### 具体实现 * 在第一次获取增量更新数据的时候将分页0传递 ``` Java ArrayList<JPromiser> adjustQs = JPromiserWhereStack.newInstance().add(QbsSyncDomainService.syncAdjustmentDataN(context, adjustmentDataDate, 0)) .addWhere("success", getSyncAdjustQ(context, adjustmentDataDate)).getTask(); ``` 拿到分页总数目 ``` Java int pageCount = t.getContent().getPageCount(); getWallet().putExtra("pageCount",pageCount); getPromiser().putWhere("success"); ``` * 在第一次调用成功后根据得到的分页信息进行下一步处理 ``` Java private Promiser getSyncAdjustQ(final Context context, final Date[] adjustmentDataDate){ return new Promiser() { @Override protected void aync(Deffered<String, String> d) { Integer pageCount =d.getWallet().getSafeInt("pageCount"); if (pageCount>1) { for (Integer i = 1; i < pageCount; i++) { Promiser promiser = QbsSyncDomainService.syncAdjustmentDataN(context, adjustmentDataDate, i); tasks.add(promiser); } } d.resolve(); } }; } ``` 分页数量大于1时继续添加分页请求,剩余几页就添加几次请求进去,保证所有的数据都能完整获取下来. 最后修改:2021 年 07 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏