繁体   English   中英

Android - 活动构造函数vs onCreate

[英]Android - Activity Constructor vs onCreate

我知道Android Activities具有特定的生命周期,并且应该重写onCreate并将其用于初始化,但构造函数中究竟发生了什么? 是否有任何情况可以/应该覆盖Activity构造函数,或者你是否应该触摸它?

我假设永远不应该使用构造函数,因为对Activities引用不会被完全清除(因此妨碍了垃圾收集器)并且onDestroy就是为此目的而存在的。 它是否正确?

我想不出有任何理由在构造函数中做任何事情。 您永远不会直接构造活动,因此您无法使用它来传递参数。 一般来说,只需在onCreate中做一些事情。

像Gili的评论所说的那样,把事情放在构造函数中的一个很好的理由是使用final字段。

但是,如果你在构造函数中初始化东西,那么对象的生命周期会稍微长一些,尽管我没有多想,因为之后很快就会调用onCreate

虽然它违背了我的理想,但我确实避免了构造函数初始化活动成员,并依赖onResume()onPause()来处理我的应用程序正在处理的资源。

对于onCreate()我通常使用它来查看映射到局部变量。 虽然android-annotations已经为我做了,所以我很少有一个onCreate()方法用于我的Activity。 我仍然在服务中使用它。

但是,如果您查看可能正在初始化的成员

  • 他们会有一个“关闭”方法,你必须在适当的时间调用(onResume或onPause)

  • 它们将成为视图的一部分,这意味着它需要被初始化然后onCreate需要被调用

  • 它们是常量,无论如何都不需要放在构造函数中,只需要一个静态的final。 这包括可以通过静态块初始化的Paint和Path常量

我现在处于需要覆盖构造函数的情况。 事实上,我有一些具有相同结构的活动。 因此,我将创建一个“Master”活动而不是创建许多活动,而其他活动将继承此活动。 所以我需要覆盖子活动的构造函数,以便能够初始化将在oncreate方法中使用的一些变量。

用两个词来说,构造函数可以让你模拟一个可以通过继承重用的“materactivity”!

当您的活动具有自定义参数或您想要跟踪从其继承的类的调用时,您需要覆盖构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM