【问题标题】:OnCreate method is always calledOnCreate 方法总是被调用
【发布时间】:2013-12-28 21:38:47
【问题描述】:

看了Android文档,一步没看懂:

当我按下按钮时,我的应用使用 startActivity(intent) 方法显示 Activity2,然后我使用后退按钮,我的应用再次显示 Activity1。如果我想显示 Activity2,我再次按下按钮,我的应用程序总是调用 onCreate 到 Activity2。

Android 文档说 onCreate 方法仅在启动或销毁时调用。

为什么会这样?

谢谢!!

问候。

【问题讨论】:

  • 是什么让你认为你的活动没有被破坏?在每个回调方法(例如 onCreate、onDestroy)中放置一些断点或一些日志,您将看到会发生什么。

标签: android android-activity


【解决方案1】:

这是完全正常的行为。您正在调用 startActivity() 以便活动开始。就这样。当您更改配置时也会调用此方法 - 即旋转设备。此外 - Activity1.onCreate() 也有可能在按下后退按钮后被调用,而它正在后台运行,如果需要更多内存,可以由系统处理。

【讨论】:

    【解决方案2】:

    每次显示(创建)活动时都会调用 OnCreate() 方法。所以每次调用startActivity(intent)方法都会调用OnCreate方法。

    查看Activity Lifecycle 了解更多信息。

    【讨论】:

      【解决方案3】:

      这是因为您在Activity2 中时按下了返回按钮,默认情况下会破坏您当前正在进行的活动。您可以覆盖onDestroy() 并打印调试消息以确认(确保调用super)。

      您应该利用onSaveInstanceState(Bundle)onRestoreInstanceState(Bundle) 分别保存和恢复Activity2 的状态,而不是保留相同的Activity2 对象。

      从技术上讲,您可以使用传递给onCreate(Bundle)Bundle 对象,因为它们是同一个对象。文档推荐onRestoreInstanceState(Bundle)

      大多数实现将简单地使用onCreate(Bundle) 来恢复它们的状态,但有时在完成所有初始化之后在此处执行此操作会很方便,或者允许子类决定是否使用您的默认实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 2021-04-12
        • 2018-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多