iOS 端从服务器获取到万条级别数据,如何对数据做优化,并显示在 tableView 上?
回答·71
最热
最新
- 万条?你以为 tableview 是干嘛用的?刚入行么?一个数组而已,优化个毛线啊。。。现在的 iOS 没那么水吧
- 以下为个人观点: 1、分页请求吧。 2、不能分页请求。接口方面,去掉 key,使用 value 形式。app 端步骤:请求两次,一次两三个屏的数据(保证第二次数据回来前能正常使用),第二次全部。数据异步处理,提前处理好显示的数据(考虑加载时间的问题就不处理了),显示到 cell 不用计算,直接赋值,高度缓存。消耗内存大的话需要考虑本地缓存,上滑从本地缓存拿取,并实现分页获取。且提前获取,不能等到没了才获取。本地缓存使用数据库吧。 问题点:全部加载了内存很大!可能还会崩溃! 处理:接口分页缓存数据库里。上滑处理,数据只保留当前显示前后几页,以页调整数据源,其他都从缓存拿或者移除。 统计项:最大、最小、top 几等问题。 丢给数据库查询处理吧。 思考:为什么需要一次性拿这么多数据?需求合理不?
- 疯了才一次性万条数据,非要这样做,优化有两个层级,第一层就两个:1.分页请求数据,单次返回一个分页的数据 2.存入数据库。 第二层级:因为我们的数据源有万条数据,所以不可能普通一个数组那样处理(内存占用过大),所以我们可以采用预缓存机制,在滑动到某页面的时候,预缓存上下两个分页的数据到数据源,这样优化了内存占用,另外,如果 cell 高度一致,我们可以开启光栅化,让它复用离屏缓存区,这样也优化了 CPU 和 GPU
- 001 建议和服务器端同事进行对接。在请求接口的的时候传 page 字段 在 Table view 底部增加 MJ footer 分页请求数据 展示出来。 002 如果服务器端同事比较强势不改那么。只好自己在 iOS 本地做一个数据缓存 每次自己从 APP 本地数据库查询获取分页数据 003 把 001 方案和项目经理谈一下。希望项目经理推进该方案 可以运用到很多项目中。 004 把 002 方案做到极致
- 我遇到过一种场景,要做仿 iOS 系统相册的需求,请问各位大佬,怎么分页?哈哈,你看系统相册瞬间切为 13 列有分页吗?这种只能从缓存,内存和渲染角度考虑,来做优化,这种场景是(可能)第一次一下请求万条数据的!
- 不考虑服务端。只看 iOS,怎么感觉搞得好复杂,tableview 的 cell 本身就是复用的,上万条数据实际的 cell 也不过是只有十几个,不到二十个,感觉不用啥优化呀。tablview 就是为了解决大量数据使用相同视图的问题而生的,优化啥? 一般情况高度缓步,如果说 cell 很复杂,那可以异步渲染啊。上万条数据,不过就是一个数组,里面上完个 Struct,也消耗不了多少内存呀? 可能是我菜吧 😂
- 不好意思,这样的公司不适合我
- 缓存本地数据库,再慢慢分页。还可以做增量更新,美滋滋啊。具体场景具体分析。
- 聊天一类离线数据可以做
- 既然有人问这样的问题,我们就回答这个问题,问题的核心点是问如何对数据做优化,那我们就老老实实回答对数据做优化好了。我们为何不好好想想大量数据的优化操作,而是把问题放在 tableview 优化上,注意审题哈老铁,轻点喷。