为啥我的 Activity 在恢复时再次从顶部运行而不是啥都不做?

Posted

技术标签:

【中文标题】为啥我的 Activity 在恢复时再次从顶部运行而不是啥都不做?【英文标题】:Why is my Activity runs from the top again when resumed instead of doing nothing?为什么我的 Activity 在恢复时再次从顶部运行而不是什么都不做? 【发布时间】:2018-02-19 10:09:17 【问题描述】:

我有一个显示数据库表的活动。当我按下电源按钮关闭屏幕,然后再次按下电源按钮以恢复活动时,表 再次加载 并执行它在创建时所做的操作。 为什么我的活动在我恢复时再次运行?

我什至放了 onResume() 并将其留空/默认。

@Override
protected void onResume() 
    super.onResume();


【问题讨论】:

你能出示你的onPause吗? 你的onStart呢? 这很简单。因为onCreate() 在您打开屏幕时再次被调用。要检查发生了什么,您可能应该在所有这些方法中包含 Log.d("<class name>", "inside <function name>") 并查看日志 我确定它不会再次调用 oncreate。恢复 Activity 后,它显示片段而不像锁定手机之前那样调用 oncreate。 好的,能否请您发布导致问题的活动的完整代码? 【参考方案1】:

因此,它会按照如下方式调用方法,永远不会调用 onCreate() 以便重新加载您的数据,

在启动 Activity 时它会调用 --> onCreate(), onStart(), onResume(),

onPower Key Off --> onPause(), onStop()

onPower Key On --> onRestart(), onStart(), onResume()

为了防止重新加载您的数据,有很多情况 this 和 this link

可能是由于:

android:configChanges="orientation|keyboardHidden|screenSize"

【讨论】:

嗯...有趣 我想知道 android:configChanges="orientation|keyboardHidden|screenSize" 与这个问题有什么关系,看起来很奇怪? 你是对的,但这可能是这种情况,因为它被用户接受并投票回答,你的问题解决了吗?@ElbertJohnFelipe 哦。我还发现将 android:screenOrientation="sensorLandscape" 放入活动清单会运行两次 onCreate 方法。太烦人了。 那个 android:configChanges="orientation|keyboardHidden|screenSize‌​" 确实解决了这个问题/谢谢!

以上是关于为啥我的 Activity 在恢复时再次从顶部运行而不是啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章

为啥片段恢复后再次调用onLoadFinished?

切换屏幕方向时保存和恢复 ButtonText

为啥我的时间 UILabel 从暂停状态恢复播放时会跳过 2 秒?

Android处理运行时变更保存数据状态恢复Activity

Android:按home后恢复应用程序时,应用程序始终从根Activity启动

我正在使用点击事件触发CSS动画,为啥再次点击时动画不会再次运行?