许多地方记录了活动的生命周期,但是我找不到我需要的东西。这是我的活动,它具有构造函数和onCreate方法。在我的项目中,我还记录了该方法,每当我从纵向转到横向时,都会看到这两种方法都已执行。为什么我的构造函数被调用?不是堆栈中的活动,而我的活动实例在内存中,因此当发生配置更改时,则仅应发生oncreate和on keepistance状态(当然是onResume)。为什么每次都调用构造函数,谁在调用?每次更改配置时都会保证两种方法都可以被调用(以相同的顺序一个接一个地调用)。 通用标签

我正在使用示例应用程序,但我想了解更多详细信息,有人可以向我说明包含构造函数的情况吗?我建立了很多有关生命周期的文档,但没有一个解释了构造函数的详细信息包含

编辑1: 我在某些地方读到,在活动中放有堆栈,因此活动在下一次启动和运行时会更快,但是当更改配置时会怎样?是否必须调用构造函数和oncreate方法?

有帮助吗?

解决方案

因此,没有理由让构造函数调用活动,除非您具有带params的构造函数(无论如何,onCreate都会为我们调用它...)。但是,基本上,这似乎像java一样onCreate可能会调用Activities的默认构造函数 通用标签

使用参数类似的构造函数尝试相同的事情 通用标签

希望这会有所帮助,

我会等待更多专家的回答:)


编辑:因此,当您旋转调用onCreate的电话时,它将再次被创建,并且onCreate可能会调用默认构造函数来调用您的活动实例:)...我忘了提早了。

其他提示

旋转时,您的活动将重新开始。您可以通过清单中的android:configChanges="keyboardHidden| orientation"来防止这种情况。

@rekire回答时,活动在屏幕旋转时重新开始。在这里,重新启动意味着框架创建了活动的另一个实例,这就是为什么要调用活动类的构造函数,然后再调用onCreate()的原因。如果没有其他活动实例的引用,新的活动实例将替换旧的实例,该实例最终将由GC回收。

如果要避免在屏幕旋转时重新启动活动,请阅读此问题

我绘制了一个UML图来描述 Android活动生命周期

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top