Android 延迟时间性能 - 视图可见性 - 我们应该在 setVisibility 之前检查视图可见性吗?

Android Delay Time Performance - View visibility - should we check view visibility before setVisibility?

根据输入的数据,我的布局将显示一些视图并隐藏一些其他视图。 那么我应该在 setVisibility() 之前用 getVisibility() 检查它们的可见性吗?

在延迟时间性能方面,什么会更好?

(我的布局有很多图片,这使得活动之间的延迟时间很长。所以这就是我 post 这个问题的原因)

经常检查来源。在这种情况下 View.java

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/View.java#L7424-L7425

public void setVisibility(@Visibility int visibility) {
    setFlags(visibility, VISIBILITY_MASK);
}

调用 setFlags :

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/View.java#L10538

这将检查标志是否已更改,如果没有,则快速 returns:

    ...
    int old = mViewFlags;
    mViewFlags = (mViewFlags & ~mask) | (flags & mask);

    int changed = mViewFlags ^ old;
    if (changed == 0) {
        return;
    }
    ...

所以虽然我没有关于性能的数字,但我想说差异可以忽略不计,因为如果您将它设置为当前值,它不会改变。

与此相反,getVisibility 也没什么作用:

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/View.java#L7413-L7415

public int getVisibility() {
    return mViewFlags & VISIBILITY_MASK;
}