我阅读了Android文档,我不明白一步:
当我按下按钮时,我的应用程序使用startActivity(intent)方法显示Activity2,然后我使用后退按钮,我的应用程序再次显示Activity1。如果我想显示Activity2,我再次按下按钮,我的应用程序总是调用onCreate to Activity2。
Android文档说明只有在启动或销毁时才会调用onCreate方法。
为什么会这样?
谢谢!
Regars。
答案 0 :(得分:0)
这是完全正常的行为。您正在调用startActivity(),因此活动正在启动。就这样。当您更改配置时也会调用此方法 - 即旋转设备。此外 - 也可能在按下后退按钮后调用Activity1.onCreate(),同时它会变为背景,如果需要更多ram,可以由系统处理。
答案 1 :(得分:0)
每次显示(创建)活动时都会调用OnCreate()方法。因此,每次调用startActivity(intent)方法时,都会调用OnCreate方法。
查看Activity Lifecycle以获取更多信息。
答案 2 :(得分:0)
这是因为您在Activity2
时按下后退按钮,默认情况下会破坏您当前所在的活动。您可以覆盖onDestroy()
并打印调试消息进行确认(确保拨打super
)。
您应该利用Activity2
和onSaveInstanceState(Bundle)
分别保存和恢复onRestoreInstanceState(Bundle)
的状态,而不是保留相同的Activity2
对象。
从技术上讲,您可以使用传递到Bundle
的{{1}}对象,因为它们是同一个对象。文档建议onCreate(Bundle)
:
大多数实现只使用
onRestoreInstanceState(Bundle)
来恢复其状态,但有时在完成所有初始化之后在此处执行此操作或以允许子类决定是否使用默认实现强>