Android: 未使用的自定义视图 "from xml" 需要有默认构造函数吗?

Android: does custom view not used "from xml" need to have default constructors?

我有一个自定义视图,我总是在代码中创建它并在代码中添加到视图层次结构中,因此它永远不会包含在 xml 中(我知道下一个维护我的代码的人可能想要从 xml 使用它,但为了简单起见,我们假设这永远不会发生)。

我的视图没有标准构造函数((Contex)、(Context, AttributeSet)),我的构造函数有一些额外的参数。这个可以吗?我知道当 XML 中包含视图时会调用标准构造函数,但如上所述,我不使用 xml 中的视图。我怀疑如果内存不足会发生什么情况,我的 activity 被杀死但视图层次结构保留 - 不需要那些构造函数,因为 Android 在重新创建视图实例时调用它们吗?我通过在模拟器中设置以在我离开时终止活动来测试它 - 尽管缺少这些默认构造函数,但我的应用程序不会崩溃并且自定义视图看起来很正常。我仍然有疑问,因为我不知道它是如何工作的。

换句话说,我的问题是: 1、在上述情况下,视图层级是以什么形式保存的?只是连载了吗?写给XML?还有别的办法吗? 2.当视图层级被复活时,视图对象是如何被重新创建的(调用默认构造函数?调用带有上下文参数的构造函数?其他方式?)

谢谢!

In the situation described above, in what form the view hierarchy is preserved?

没有保留。

When the view hierarchy is resurrected, how the view objects are recreated

通过您的代码创建它们。

does custom view not used “from xml” need to have default constructors?

您需要您正在使用的任何构造函数。布局 inflation 需要双参数构造函数(ContextAttributeSet),我最后检查了一下。但是,如果您不使用它,则不需要实施它。