布局优化---祭奠死去的三日

首先说一下背景,项目一个滑动界面,利用viewPager做的,滑动以及加载的时候十分卡,卡到怀疑人生。所以,不幸的收到了优化的工作。优化看似简单,实则真是一言难尽(orz)。虽然很头大,但是还是收获颇多,结果也不算太坏。界面的情况大致如下,一个大界面,仅有一个recycleView,里面有60个item需要一起显示,而且每个item的布局是复用的,也就是说其他界面也会用这个布局,只是根据状态对控件进行隐藏和显示,这就导致了item的布局很深较复杂,滑动不卡顿那才是奇怪的事情。不考虑加载动画,因为需求不许,要有加载动画,走完第一个回合就差不多了。

我统计了一下布局的层数,有七层之多,所以第一步就是要减少嵌套。下面就是我走过的辛酸历程

1.设计布局前,尽量的考虑用最少的嵌套层数。优化布局的时候,先考虑能不能减少层数。如果你存在父布局也有id,他的作用只不过是统一显示或隐藏其子控件,那么你大可以把这层去掉,逻辑层写方法统一处理子控件;同时检查是否存在多余的背景图,本人的优化布局就存在一个image,设置match宽高充当背景,这个大可不必,完全可以去掉。如果最后发现实在无法去把嵌套减少,那么新出的约束布局则是最好选择。我经过对比,发现在层级很少的情况下,约束布局的效率和传统布局差距不大,甚至不如传统布局,但是对于层级很深的(3层以上),优势较大,可提升一个台阶。约束布局的好处是,你经过缜密的设计,可以完全把一套空间写在同一个层级中,这样绘制的效果就会大幅度增加。以上我都做了,效果有提升,但还是达不到要求,60个item,确实难。这里送上一个链接,是比较布局之间的加载速度,个人经过实际测试,也相差无几

https://www.cnblogs.com/liujingg/p/7161319.html

2.layout_weight慎用,我查阅了大量资料,layout_weight其实也会对布局加载速度产生影响。一般布局没那么复杂,还好,影响几乎为0,但是需求的这个布局,乘上60,这个影响就大了。所以,在LinearLayout布局中这个比例慎用,我对一些不复杂的地方将其宽或搞固定,发现确实有提升,但提升较小。约束布局也有类似应用,如果真需要用比例,不妨减少层级用约束布局,通过约束布局的比例运用来解决,这样的效率会提高不少。

3.onBindViewHolder里面的方法子线程调用。突发奇想,由于每个布局都在主线程,那么假如多开线程会不会好一点?事实上并不会,因为加载onCreateView里面是不予许在子线程调用,至少我是报错的,所以最后改为在onBindViewHolder里面。初始确实不会卡,但界面效果是你划到那个界面他会一个一个加,其实如果需求允许的情况下,个人觉得这种效果也不失为一种好的解决方式。

4.StudView。需求要求不可取,这个标签的意思是,你只有代码调用的时候他才会加载,也就是说,你不用的话他就相当于不存在,这就造成了本人优化项目的一个后果,由于布局共用,id找不到导致部分用到代码的地方挂掉。当然如果你仔仔细细的一开始就能捋顺,用这个来设计共用布局,也不失为一个好的解决方案。但是项目是祖传代码,无解,还不如从新写。

5突然又想到了懒加载,因为既然是进来的时候慢,那是因为会预加载其他的,那么关闭预加载不就行了?一次只加载一个,应该会快一点,结果,根本没用。看来这里面的源码还需要多瞅瞅。

6.最后只能抽离布局了,把布局抽离出来,各用各的,耗费许多时间,但是效果较为理想。能不要的控件尽量不要,在实际中发现,布局层数的减少到最后往往时间上不会减少很多,相反,控件个数的减少会缩短很多时间。所以这也给了一个提示,有能够共用一个控件进行展示的尽量用一个,比如图文,尽量自定义控件,不要一个ImageView加textView。同时,启示就是,共用虽然方便,但后患也不是没有,一定要考虑仔细。

推荐工具,SysTrace,教程网上一堆,作为辅助用。还有就是打开机器的gpu渲染,看看重绘程度。不要苛求,因为有的实在没办法消去所有的红色,保证界面只有一小部分是红色,就足够了。

总体就是这么多了,都是些常见的手段,所以假如大神看见了,也给点其他的建议,小弟在此谢过了。笔记,记菜鸟优化路之疯狂的三天。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容