java Android活动构造函数与onCreate
我知道Android Activities
有特定的生命周期,并且onCreate
应该被覆盖并用于初始化,但是构造函数中到底发生了什么?您是否也可以/应该重写Activity
构造函数,或者永远不要碰它
我假设永远不应该使用构造函数,因为对Activities
的引用没有被完全清除(从而妨碍了垃圾收集器),并且onDestroy
就是为了这个目的而存在的。这是正确的吗
你可以在下面搜索框中键入要查询的问题!
我知道Android Activities
有特定的生命周期,并且onCreate
应该被覆盖并用于初始化,但是构造函数中到底发生了什么?您是否也可以/应该重写Activity
构造函数,或者永远不要碰它
我假设永远不应该使用构造函数,因为对Activities
的引用没有被完全清除(从而妨碍了垃圾收集器),并且onDestroy
就是为了这个目的而存在的。这是正确的吗
# 1 楼答案
正如Gili的评论所述,将内容放入构造函数的一个很好的理由是使用final字段
但是,如果您在构造函数中初始化一些东西,那么对象的生命周期将稍微长一点,尽管我不怎么认为,因为
onCreate
将在此后不久被调用虽然这违背了我的理想,但我确实避免了活动成员初始化的构造函数,并且依赖于
onResume()
和onPause()
来获取我的应用程序正在处理的资源对于
onCreate()
,我通常使用它来进行视图到局部变量的映射。虽然android注释已经为我做了,所以我很少有一个onCreate()
方法用于我的活动。但我仍然在使用它但是,如果查看成员,您可能正在初始化
他们会有一个“关闭”方法,您必须在适当的时间(onResume或onPause)调用该方法。
它们将是视图的一部分,这意味着它需要初始化,然后需要调用onCreate
它们是常量,无论如何都不需要放在构造函数中,只需要一个静态final就可以了。这包括可由静态块初始化的绘制和路径常量
# 2 楼答案
我现在正在处理一个需要重写构造函数的案例。事实上,我有一些具有相同结构的活动。因此,我将创建一个“主”活动,而不是创建许多活动,其他活动将继承此活动。因此,我需要重写子活动的构造函数,以便能够初始化将在oncreate方法中使用的一些变量
换句话说,构造函数让您模拟一个可以被继承重用的“masteractivity”
# 3 楼答案
我想不出有什么好的理由在构造函数中做任何事情。您从不直接构造活动,因此不能使用它传递参数。通常,只需在onCreate中执行操作
# 4 楼答案
当您的活动将具有自定义参数或希望跟踪从继承的类中的调用时,您需要重写构造函数