gpt4 book ai didi

android - 在具有相同可绘制 ID 的 TextView 上调用 setBackground 两次。怎么了?

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:16 24 4
gpt4 key购买 nike

我有一个 TextView 和一个可绘制对象。如果我两次使用相同的 drawable id 设置 textview 的背景(没有特定原因),我想知道它是否会导致任何性能损失。

我知道 android 会为每个 View (http://developer.android.com/guide/topics/ui/how-android-draws.html)执行整个测量-布局-绘制过程,每次我们在其上调用任何设置方法,如 setText、setBackground 等。

我想知道,以防万一,我使用同一个 drawable 不小心调用了 setBackground 两次,android 会两次经历整个绘图周期,导致性能损失,或者这是由 android 优化的,就像 android 可能记得我我正在设置与之前设置相同的背景,因此无需执行绘图循环?

如果有人有这方面的知识,请帮忙!

最佳答案

答案就在 View 的源代码中类。

setBackgroundResource() 执行此检查:

if (resid != 0 && resid == mBackgroundResource) {
return;
}

setBackgroundDrawable()(由 setBackground() 调用)检查引用,如果它们指向同一个 Drawable,则不执行任何操作

if (background == mBackground) {
return;
}

因此,如果您在调用 setBackground() 时使用相同的引用/相同的资源 ID,您不应招致性能损失,因为 Android 不会重做整个可绘制对象设置过程。

关于android - 在具有相同可绘制 ID 的 TextView 上调用 setBackground 两次。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com