为啥我的 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 在恢复时再次从顶部运行而不是啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的时间 UILabel 从暂停状态恢复播放时会跳过 2 秒?
Android处理运行时变更保存数据状态恢复Activity