Android 是否将视图对象层次结构保留在内存中?

Does Android keep the view object hierarchy in memory?

当我创建一个按钮时:

@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) return 是确切的实例 (btn) 吗?还是 Android 创建并 return Button 和 return 的新实例?

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

对于任何视图组,当您一次添加任何子视图时,它不会创建新实例。

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

private View[] mChildren;

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

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