Android:不使用自定义视图"来自xml"需要默认构造函数?

时间:2016-03-14 17:53:15

标签: android serialization view lifecycle

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

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

换句话说,我的问题是: 1.在上述情况下,视图层次结构以什么形式保留?它只是序列化?写入XML?还有其他方法吗? 2.当视图层次结构复活时,如何重新创建视图对象(默认构造函数调用?带有Context参数的构造函数?还有其他方式吗?)

谢谢!

1 个答案:

答案 0 :(得分:0)

  

在上述情况下,视图层次结构的形式是什么?

没有保留。

  

复制视图层次结构时,如何重新创建视图对象

然而,您的代码会创建它们。

  

未使用“自xml”的自定义视图是否需要默认构造函数?

您需要使用的任何构造函数。布局通胀需要双参数构造函数(ContextAttributeSet),最后我检查。但是,如果您不使用它,则无需实现它。