【问题标题】:Android - which Activity methods require a super constructor?Android - 哪些 Activity 方法需要超级构造函数?
【发布时间】:2013-01-14 05:52:38
【问题描述】:

在大多数 Android 应用程序中,onCreate() 被覆盖,代码的第一位是 super.onCreate(savedInstanceState),我知道这会收集 savedInstanceState Bundle 并且是编译所必需的,但是所有构造函数呢?

onResume()onStop()onStop() 等。哪些被覆盖的方法需要包含重要的超级构造函数?

某处有清单吗?

我看到超级构造函数包含在某些代码中,而不是其他代码中。有时我自己也包含它们,其他代码则没有,并且从未真正注意到它们的区别。

任何可以散发的光都会受到好评!

干杯

【问题讨论】:

  • 您在这里误用了 constructor 一词。 constructor 是一种创建新对象的特殊方法。
  • 您是说每个经常传递参数的方法中的第一个默认方法,即。 onCreate 中的super(savedInstanceState) 不是将参数传递给父类的构造函数的情况吗?他们只是方法?
  • 是的。在onCreate() 内部,当您调用super.onCreate() 时,您并没有调用活动的构造函数。您正在调用onCreate(),这是一个方法
  • 感谢您指出这一点,很高兴知道您的具体情况!

标签: android methods constructor overriding super


【解决方案1】:

检查此documentation

Activity 的整个生命周期由以下 Activity 方法定义。所有这些都是您可以覆盖的钩子,以便在活动更改状态时进行适当的工作。所有活动都将实现 onCreate(Bundle) 以进行初始设置;许多人还将实现 onPause() 以提交对数据的更改,否则准备停止与用户交互。在实现这些方法时,您应该始终调用您的超类。

public class Activity extends ApplicationContext {
    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onRestart();

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();
}

【讨论】:

    【解决方案2】:

    onCreate()onStart()onResume() 用于启动活动,而onStop()onDestroy() 用于停止或清理活动。

    根据文档,您需要为每个方法调用 super。

    派生类必须调用超类的实现 这种方法。否则,将引发异常。

    对于more info

    【讨论】:

    • 最后一行基本上就是我要找的,干杯!
    【解决方案3】:

    如果您阅读源代码,您会注意到在 Activity.java 中这 6 个方法内部有代码,所以我想说您应该为每个覆盖的 onXXX 方法调用 super。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2013-10-25
      相关资源
      最近更新 更多