建议Android开发人员减少其应用中的透支。
https://developer.android.com/topic/performance/rendering/overdraw.html
iOS开发人员被警告过度透支,但并未强调。相反,他们可以选择为混合图层着色。
根据我对iOS CoreGraphics的理解,将图层放入GPU中,GPU在渲染时将它们组合在一起。当未混合像素(Alpha通道)时,计算要显示的像素更容易。
导致Android专注于透支的技术差异是什么?你能提供技术参考吗?
答案 0 :(得分:2)
我想这主要是由于Painter's Algorithm和Z-Buffering之间的差异。
使用前者,您可以根据布局从前到后绘制每个视图,并根据需要重新绘制像素。这可能会导致相当多的浪费,因为无论它们是否被遮挡,都需要渲染像素。
Z-Buffering可以通过使用Z-Culling来改善这一点,如果您的图层被正确分类,可以提前消除某些像素。
最初,Android使用完全基于软件的渲染堆栈,因此Z-Buffering不可用,据我所知,使用了简单的Painter算法。 iOS始终基于硬件加速渲染,因此可以(某些)利用Z-Buffering。但是自Android 3.0以来,Android也开始实现基于硬件的渲染。
但实际情况并非如此简单。首先,使用硬件层并进行深度排序也会带来一些成本,如果处理非常简单的绘图操作(如移动应用程序)(例如简单地绘制位图,与基于复杂像素的闪存操作相反),过度绘制像素实际上可能比试图避免它更便宜。处理透明胶片时,事情显然也变得更加复杂。
我认为Android和iOS都使用了多种技术,因此Overdraw很可能会出现在两个平台上。在任何情况下,尝试避免不必要的重叠都试图完全避免问题,这是一个好主意。
答案 1 :(得分:-1)
iOS开发人员确实被要求避免透支:
当您的应用或其内容不可见时,消除绘图;例如,当您的应用在后台时,或其内容被其他视图,剪辑或屏幕外遮挡时。
来自您提到的链接。