gpt4 book ai didi

android - Android 是否将 View 对象层次结构保存在内存中?

转载 作者:行者123 更新时间:2023-12-02 02:41:47 33 4
gpt4 key购买 nike

当我创建一个按钮时:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

LinearLayout layout = …;

Button btn = new Button(this);
btn.setText("My Button");

layout.addView(btn);
}

如果我不保留对 btn 的强引用, Android 是否保留 btn实例还活着?

例如,layout.getChildView(0)返回确切的实例(btn)?还是 Android 创建并返回 Button 的新实例并归还?

我不是在谈论子类化(例如 class MyButton extends Button),我认为很明显它必须保存在内存中,我只是在询问内置 View 类。

最佳答案

ViewGroup 将对其子项的强引用存储在一个数组中。如果查看 ViewGroup 来源,您会发现以下字段:

private View[] mChildren;

当您调用 getChildAt 时,您会从这个数组中获得一个实例:

public View getChildAt(int index) {
if (index < 0 || index >= mChildrenCount) {
return null;
}
return mChildren[index];
}

关于android - Android 是否将 View 对象层次结构保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59008256/

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