方向更改时,活动会不断重新启动

gsf*_*sfd 3 java android android-activity

当屏幕旋转或用户在手机上滑动键盘时,如何防止活动重启?这可能吗?有工作吗?所有相关答案都表示赞赏.

nic*_*ild 7

你可以通过在你的activity元素中声明一个特定的属性来做到这一点manifest.xml.调用有问题的元素android:configChanges,您需要注册字符串值orientation.

<activity android:name=".MyActivity"
      android:configChanges="orientation"
      android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)

文档:

现在,当其中一个配置发生更改时,MyActivity不会重新启动.相反,Activity接收对onConfigurationChanged()的调用.此方法传递一个Configuration对象,该对象指定新设备配置.通过读取"配置"中的字段,您可以确定新配置并通过更新界面中使用的资源进行适当的更改.在调用此方法时,您的Activity的Resources对象会更新以根据新配置返回资源,因此您可以轻松重置UI的元素,而无需系统重新启动您的Activity

这样做会导致您Activity不重启,并且还会回调,onConfigurationChanged()以便可以自己处理更改.

  • 除了"方向"之外,根据您的问题,您可能还需要添加相关的键盘配置更改来处理键盘操作,因此您可能想要放置的值是"orientation | keyboard | keyboardHidden".正如尼古拉斯所说,你可能想要/需要自己处理onConfigurationChanged() (3认同)