有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android活动构造函数与onCreate

我知道Android Activities有特定的生命周期,并且onCreate应该被覆盖并用于初始化,但是构造函数中到底发生了什么?您是否也可以/应该重写Activity构造函数,或者永远不要碰它

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


共 (4) 个答案

  1. # 1 楼答案

    正如Gili的评论所述,将内容放入构造函数的一个很好的理由是使用final字段

    但是,如果您在构造函数中初始化一些东西,那么对象的生命周期将稍微长一点,尽管我不怎么认为,因为onCreate将在此后不久被调用

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

    对于onCreate(),我通常使用它来进行视图到局部变量的映射。虽然android注释已经为我做了,所以我很少有一个onCreate()方法用于我的活动。但我仍然在使用它

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

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

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

    • 它们是常量,无论如何都不需要放在构造函数中,只需要一个静态final就可以了。这包括可由静态块初始化的绘制和路径常量

  2. # 2 楼答案

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

    换句话说,构造函数让您模拟一个可以被继承重用的“masteractivity”

  3. # 3 楼答案

    我想不出有什么好的理由在构造函数中做任何事情。您从不直接构造活动,因此不能使用它传递参数。通常,只需在onCreate中执行操作

  4. # 4 楼答案

    当您的活动将具有自定义参数或希望跟踪从继承的类中的调用时,您需要重写构造函数