关键词: 渲染
多线程
网格传输
出此问题 基本肯定是数据或者UI除了问题
可能原因:
- 列表渲染时间长。UI控件比较复杂,或者图层过多
- 界面渲染后。大量的操作或者耗时的计算阻塞了主线程
- 数据源问题。网络请求慢,不能及时得到相应的数据、也有可能需要更新的数据太多,主线程处理不过来。
针对以上问题,分别进行优化
对于第一个问题:首先检查tableView是否进行了复用。对于复杂试图的创建,可以采用惰性加载来延迟创建时间。尽量减少视图的层级也是很好的优化方法,Facebook退出的ComponentKit就是很好的解决方案
对于第二个问题:可以用GCD多线程操作将复杂的操作放在后端线程,并进行缓存。例如对于布局计算或者非UI对象的创建和调整就可以这面操作。LinkedIn推出的LayoutKit就是很好的例子
对于第三个问题:建议将网络端的数据缓存于手机端,将取得的部分数据根据优先级进行顺序渲染,还可以优化服务器端的实现来优化网络请求。
另外,对于界面渲染和优化。其实Facebook和Pinterest维护的ASDK是目前功能最全效果最好的、使用最广的第三方解决方案。
网友评论