代码之家  ›  专栏  ›  技术社区  ›  idolize

Android-活动构造函数与OnCreate

  •  81
  • idolize  · 技术社区  · 15 年前

    我了解Android Activities 有特定的生命周期 onCreate 应该重写并用于初始化,但构造函数中到底发生了什么?是否有任何情况可以/应该覆盖 Activity 建造师也一样,或者你不应该碰它?

    我假设永远不应该使用构造函数,因为引用 活动 没有完全清理干净(因此妨碍了垃圾收集器),而且 onDestroy 是为了这个目的吗?这是正确的吗?

    4 回复  |  直到 12 年前
        1
  •  32
  •   Cheryl Simon    15 年前

    我想不出任何在构造函数中做任何事情的好理由。您从不直接构造活动,因此不能使用它来传递参数。一般来说,只需在创建时进行操作。

        2
  •  7
  •   Archimedes Trajano    12 年前

    正如Gili的评论所述,将事物放入构造函数的一个很好的理由是使用最后的字段。

    但是,如果您在构造函数中初始化一些东西,那么对象的寿命将稍长一点,尽管我认为这并不是很长,因为 onCreate 很快就会打来。

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

    为了 onCreate() 我通常用它来做局部变量的视图映射。虽然Android注释已经为我做了这些,所以我很少有 OnCuto() 我的活动方法。不过,我仍然在服役中使用它。

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

    • 它们有一个“close”方法,您必须在适当的时候调用(onresume或onpause)

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

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

        3
  •  6
  •   joran    13 年前

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

    换句话说,构造器使您模拟一个可以被继承重用的“masteractivity”!

        4
  •  0
  •   Pentium10    15 年前

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