在我的Android应用程序中,当我旋转设备(滑出键盘)时,“活动”将重新启动(调用onCreate)。现在,这可能是应该的,但我在onCreate方法中做了很多初始设置,所以我需要:

将所有初始设置放在另一个功能中,这样不会在设备旋转或使其不再调用Create,布局仅调整或将应用程序限制为仅肖像,以便不调用onCreate。


当前回答

注意:如果将来有人和我面临同样的问题,我会发布这个答案。对我来说,下面这行是不够的:

android:configChanges="orientation"

当我旋转屏幕时,没有调用方法`onConfigurationChanged(配置新配置)。

解决方案:即使问题与方向有关,我也必须添加“screenSize”。因此,在AndroidManifest.xml文件中,添加以下内容:

android:configChanges="keyboardHidden|orientation|screenSize"

然后实现方法onConfigurationChanged(Configuration newConfig)

其他回答

我只是简单地补充了一句:

android:configChanges="keyboard|keyboardHidden|orientation"

在AndroidManifest.xml文件中,并且没有在我的活动中添加任何onConfigurationChanged方法。

所以,每当键盘滑出或滑入时,什么都不会发生!也可以查看这篇关于这个问题的文章。

谷歌推出的android架构中最好的组件之一将满足ViewModel的所有要求。

它旨在以生命周期的方式存储和管理与UI相关的数据,并允许数据在屏幕旋转时继续存在

class MyViewModel : ViewModel() {

请参阅:https://developer.android.com/topic/libraries/architecture/viewmodel

每次旋转屏幕时,打开的活动都会完成,并再次调用onCreate()。

1.当屏幕旋转时,您可以做一件事来保存活动状态,这样,当再次调用活动的onCreate()时,您就可以恢复所有旧的内容。参考此链接

2.如果要阻止重新启动活动,只需在manifest.xml文件中放置以下行。

<activity android:name=".Youractivity"
    android:configChanges="orientation|screenSize"/>

您可以在活动中使用ViewModel对象。

ViewModel对象在配置更改期间自动保留,以便它们所保存的数据可立即用于下一个活动或片段实例。阅读更多信息:https://developer.android.com/topic/libraries/architecture/viewmodel

在该活动集中,配置更改如下

 android:configChanges="orientation|screenSize|keyboardHidden"