旋转设备时出现问题,重新执行活动并更改值,例如,假设您有一个带有按钮的活动,则单击此按钮时它将显示增加的文本视图(计数器)中的值。当您将设备置于横向模式时,该活动将再次运行,并且您将(再次)看到该值增加了。我的问题是,有没有办法在旋转设备时不再运行该活动?
答案 0 :(得分:1)
请阅读this。您将看到有两种解决配置更改的解决方案:
您可以通过更新清单中的活动来声明您自己处理更改。这样,您的活动将不会重新开始,并且将调用onConfigurationChanged()
:
<activity ...
android:configChanges="orientation|screenSize"
...>
您可以通过onSaveInstanceState()
函数将数据对象传递给新活动。传递大对象可能会使应用程序变慢。最好例如通过使用ViewModels从视图中分离数据,这些类型的更改中会保留这些数据。
第一种方法似乎很简单,但不建议这样做,因为您可以在开头提供的链接中看到它:
警告:自己处理配置更改可能会做很多事情 更难使用替代资源,因为系统确实 不会自动为您应用它们。这种技术应该是 当您必须避免由于 配置更改,不建议在大多数应用中使用。
答案 1 :(得分:0)
在活动中添加android:configChanges
<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>
答案 2 :(得分:0)
在清单文件中添加android:configChanges = "orientation|screenSize"
到活动标签。
例如:
<activity
android:name=".dummyActivity"
android:configChanges = "orientation|screenSize"/>
如果要手动处理方向更改,可以通过重写“活动”中的onConfigurationChanged()
方法来实现。
有关更多信息,请参见Handling Configuration Changes
答案 3 :(得分:0)
将此添加到清单
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
如果configChanges包含uiMode,请将其删除。如果您不想卸载uiMode,则可以更新这些库。
androidx.appcompat:appcompat:1.2.0-rc01
androidx.core:core:1.3.2