关于 Android APP 过度绘制的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crazypudding
V2EX    Android

关于 Android APP 过度绘制的问题

  •  
  •   crazypudding 2018-05-21 09:06:06 +08:00 13716 次点击
    这是一个创建于 2702 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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


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

    很多时候还是要给工程性让步的,只要能保证 16ms 渲染也无所谓。
    ericcode
        15
    ericcode  
       2018-05-21 16:49:16 +08:00
    可能是现在的手机性能过剩,都不卡,如果卡了就有人会关心这个问题了吧
    crazypudding
        16
    crazypudding  
    OP
       2018-05-21 18:57:20 +08:00 via Android
    @sampeng @nicevar 有些过度绘制确实是没法避免的,所以说只能尽可能在自己做的时候注意下这个问题,至少写的代码多年后自己再看到不会觉得一阵恶心,,至于优化效果,就我做完来看,确实不是很明显
    carpediemvv
        17
    carpediemvv  
       2018-05-21 22:52:00 +08:00 via Android
    我发现就算绘制 30 层,甚至更多,都不会卡。程序卡百分之九十九,都是业务逻辑和 ui 更新,没写清楚。动画,多媒体播放器没有交代好。
    youxiachai
        18
    youxiachai  
       2018-05-21 23:10:42 +08:00
    其实...关于过度绘制...其实 android 在渲染那块是有一定的优化的........
    对于避免过度绘制..最好还是上 constraintlayout ...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1129 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 23:10 PVG 07:10 LAX 16:10 JFK 19:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86