关于 Android APP 过度绘制的问题

2018-05-21 09:06:06 +08:00
 crazypudding

发现目前市面上大多数 APP 都没有做过度绘制优化(至少看上去是一片红),包括大厂的 APP 哪怕是 Gmail 目测也是一样,图就不上了,大家打开过度绘制调试工具就能看到,所以想问问各位对于过度绘制优化的看法,是认为没必要还是出于其他原因呢~

7867 次点击
所在节点    Android
18 条回复
crayygy
2018-05-21 09:10:14 +08:00
看复杂度,有些是一开始没考虑到,后面布局已经定型了,突然大改的话成本没必要。但是我们还是有一个同事专门花了一两周时间基本解决了这个....
crazypudding
2018-05-21 09:17:58 +08:00
@crayygy emmm...我差点以为咱两是同事,,,我基本解决了这个问题后,想看看一些经典的 APP 和 Google 家亲儿子怎么做的,发现都是一片红。。。另,确实一开始就应该考虑进来,后续改动不仅仅是成本问题,还可能会有一些历史遗留引起的不适。。。
crayygy
2018-05-21 09:31:48 +08:00
@crazypudding #2 我们是因为发现有很多的 Frozen Frames,然后从各个角度都开始进行优化
zhenghuiy
2018-05-21 10:05:15 +08:00
一开始就考虑太多会拖累开发进度。现在写布局需要考虑的东西太多了,布局复杂度(尽量减少层级)、热区大小、过度绘制,当然还有最应该考虑的具体业务实现。

除非是时间很充裕或者页面结构简单可以顺手做了,否则优化型的都应该放到以后做。(也可能你做了一堆发现后面需求变了,233 )
tanranran
2018-05-21 10:16:53 +08:00
历史原因+需求变更

你优化的速度更不上变更的速度

还有就是一些特殊的需求,你很难优化的


constraintlayout 了解一下??新布局都用它写会减少很多层级
Chrisplus
2018-05-21 11:03:58 +08:00
know nothing do everything,然后回头说手机不行
DeweyReed
2018-05-21 11:46:53 +08:00
尽力而为吧。很多时候不多绘制一次,有的地方会全黑,想解决还得手动画框框绘制,现在手机性能上来了,可以放开一些。
Gmail 还凑活大多都是蓝绿。不过有的应用全红当然是有问题了。
个人经验是,修理这个挺烦的,不过有时间为了良心过得去也要修一下。
crazypudding
2018-05-21 13:25:54 +08:00
@zhenghuiy 放到以后做是不可能的了,这辈子都不可能了 2333,,,只能说在开发的同时尽量考虑,不然新需求一上来停都停不下来
crazypudding
2018-05-21 13:30:48 +08:00
@tanranran 是这么个理,只能说新开发的同时尽量去注意做一下这个事。constraintlayout 一直在用,只是公司项目太老,要优化层级相当于重写了
crazypudding
2018-05-21 13:32:15 +08:00
@DeweyReed 感觉这个就是得开发的时候注意,后期优化工作量太大,一不小心还能挖个坑出来
GoodRainChen
2018-05-21 13:55:21 +08:00
说白了还是责任心的问题,有些人只想赶紧做完,有些人做之前先考虑考虑
至于别人做完了让我去优化?那不存在的,能这么不负责的人,写出来的代码谁敢动?
nicevar
2018-05-21 14:23:00 +08:00
软件做到一定程度,有些是无法避免的,只能说尽量控制,自绘框架做的再好随着需求不断变动,最终也会掉这个坑里
早期 symbian 时代,那些自绘框架对这个非常注重,你那软件跑一会儿就发热,电唰唰的掉,用户转身就卸载了,到了 iOS 和 Android 时代,没多少程序员关心这个了,除非出现明显卡顿才会有人去处理
sampeng
2018-05-21 14:45:56 +08:00
成本问题,精力成本和维护成本。我基本倒每次都会看一眼过度渲染。但实际上是没有办法完全避免。也没什么太多必要。看一眼渲染时间,已经 16ms 左右了,那再优化产生不了太大价值。
明显卡顿的时候,所有其他办法都用了再回来看这个,99%的时候无效。。有几次性能优化的时候遇见过= =!性价比并不高~。再仔细看看是逻辑算法有问题而已。。。
虽然没做过 pc 客户端,但从原理上推测,不管什么客户端,都没办法完全避免过度渲染,图层一定是一层一层贴上去的。只是重合问题多少而已。
zhouquanbest
2018-05-21 15:02:00 +08:00
过度绘制不是 Bug
过度绘制也不一定等于卡顿

很多时候还是要给工程性让步的,只要能保证 16ms 渲染也无所谓。
ericcode
2018-05-21 16:49:16 +08:00
可能是现在的手机性能过剩,都不卡,如果卡了就有人会关心这个问题了吧
crazypudding
2018-05-21 18:57:20 +08:00
@sampeng @nicevar 有些过度绘制确实是没法避免的,所以说只能尽可能在自己做的时候注意下这个问题,至少写的代码多年后自己再看到不会觉得一阵恶心,,至于优化效果,就我做完来看,确实不是很明显
carpediemvv
2018-05-21 22:52:00 +08:00
我发现就算绘制 30 层,甚至更多,都不会卡。程序卡百分之九十九,都是业务逻辑和 ui 更新,没写清楚。动画,多媒体播放器没有交代好。
youxiachai
2018-05-21 23:10:42 +08:00
其实...关于过度绘制...其实 android 在渲染那块是有一定的优化的........
对于避免过度绘制..最好还是上 constraintlayout ...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX