android - 当方向改变发生时调用哪个 Activity 方法?

标签 android android-activity orientation onresume

当方向改变发生时,生命周期的哪个方法被调用? 我的应用程序执行 onResume() 方法或者可能重新加载整个 Activity ,因为我设置了一个 bool 值来检查它是否第一次运行。我读过 onConfigurationChanged() 在方向改变发生时开始,是真的吗? 如何处理?

最佳答案

有趣的...

Activity is start onResume() 是您在 XML 中默认声明的。

正如我从堆栈溢出问题的答案中发现的那样:

方向改变

  • onSaveInstanceState
  • 暂停
  • onStop
  • onCreate
  • onStart
  • onRestoreInstanceState
  • onResume

切换到 Activity 2

  • onSaveInstanceState
  • 暂停

在 Activity 2 中改变方向

  • onStop
  • onCreate
  • onStart

从 Activity2 切回

  • onResume

我猜是因为 Activity 1 在旋转时是隐藏的,所以没有调用 onRestoreInstanceState 因为没有“ View ”(即无法看到/查看) .此外,完全有可能拥有 2 个完全不同的纵向/横向布局文件,它们可能具有具有不同 ID 的不同 UI 元素。

因此,我想说如果你想在 onSaveInstanceState 中使用 Bundle 来保存你自己的数据,那么你需要在 onCreate 中添加额外的逻辑(在 Activity 1 中)在那里处理您自己的数据(以及在 onRestoreInstanceState 中进行有条件的处理)。

特别是,您可以维护一个“最后已知”方向字段,以便 onCreate 知道它需要处理您自己的数据,因为方向已更改,而不是依赖于 onRestoreInstanceState 被调用。

关于android - 当方向改变发生时调用哪个 Activity 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315908/

相关文章:

用于纵向方向的 CSS img srcset 媒体查询

ios - 以编程方式允许某些 View Controller 的纵向和横向方向

java - LibGDX:Android 设备上加载纹理缓慢(不断调用垃圾收集器)

java - 如何构建编程过程?

java - 单击按钮后打开一个新 Activity

android - 手机锁定/休眠时不调用 ActivityInstrumentationTestCase2 中的 onCreate()

java - 将 std::string 转换为 ndk jstring

android - 广播有应用程序启动计数

android - 如何在特定时间开始 Activity ?

swift - SpriteKit 默认横向