为啥水平应用程序在 onPause() 之后创建垂直活动
Posted
技术标签:
【中文标题】为啥水平应用程序在 onPause() 之后创建垂直活动【英文标题】:why horizontal application create vertical activity after onPause()为什么水平应用程序在 onPause() 之后创建垂直活动 【发布时间】:2019-01-11 03:23:21 【问题描述】:我的应用应该只是水平的。在 AndroidManifest.xml 我有android:screenOrientation="sensorLandscape"
。
但是当我按下电源按钮(关闭设备)然后再次按下电源按钮(打开设备)时,我可以看到一些问题。通过调试过程,我可以看到我的应用程序经历了以下步骤:
按下电源按钮->onPause()->onSaveInstance()->onStop()->onDestroy()->onCreate()->onStart()->onResume()->onPause()。我可以看到创建了 HORIZONTAL 活动,但它的大小等于垂直屏幕!
然后:按下电源按钮->onResume()->onPause()->onSaveInstante()->onStop()->onDestroy()->onCreate()->onStart ()->onResume()。 并创建了所需的水平活动。
我的错误在哪里?我应该首先在任何地方设置屏幕尺寸吗?
我理解了这个问题:当我按下电源按钮时,方向发生了变化(锁定屏幕默认为纵向),这导致调用 onCreate()。 那我该怎么办?
【问题讨论】:
在清单中使用这个而不是 sensorLandscape ..android:screenOrientation="landscape" 它不起作用(你能告诉我为什么需要在暂停之前创建新活动吗? 检查您是否以编程方式在代码中的任何位置更改了方向? 在 setContentView 之前的 onCreate 中写入 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // 只在横向模式下运行你的应用程序 不,一点也不。 【参考方案1】:使用 android:configChanges="orientation|screenSize" 解决了这个问题。小菜一碟。
【讨论】:
以上是关于为啥水平应用程序在 onPause() 之后创建垂直活动的主要内容,如果未能解决你的问题,请参考以下文章
Android - 将 ProgressBar 设置为垂直条而不是水平条?
如何防止 onPause() 之后调用 onDestroy()?
android一个示例同时在onSaveInstanceState和onPause中调用数据保存函数,这是为啥?