Java 横向定位不正确

Java 横向定位不正确,java,android,Java,Android,当我旋转设备时出现问题,我的活动被重新执行,值​​例如,假设您有一个带有按钮的活动,单击此按钮时,它将在文本视图(计数器)中显示增加的值。当您将设备置于横向模式时,活动将再次运行,并且您将看到(再次)价值增加。我的问题是,当您旋转设备时,有没有办法不再运行活动?添加android:configChanges在您的活动中 <activity name= ".YourActivity" android:configChanges="orientation|screenSize"/> 添

当我旋转设备时出现问题,我的活动被重新执行,值​​例如,假设您有一个带有按钮的活动,单击此按钮时,它将在文本视图(计数器)中显示增加的值。当您将设备置于横向模式时,活动将再次运行,并且您将看到(再次)价值增加。我的问题是,当您旋转设备时,有没有办法不再运行活动?

添加android:configChanges在您的活动中

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

添加android:配置活动中的更改

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

在清单文件中添加
android:configChanges=“orientation | screenSize”
到活动标签

例如:

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

在清单文件中添加
android:configChanges=“orientation | screenSize”
到活动标签

例如:

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

请阅读。您将看到有两种处理配置更改的解决方案:

  • 您可以通过更新清单中的活动来声明自己正在处理更改。这样,您的活动将不会重新启动,并且将调用
    onConfigurationChanged()

    <activity ...
        android:configChanges="orientation|screenSize"
        ...>
    
    
    
  • 您可以通过
    onSaveInstanceState()
    函数将数据对象传递给新活动。传递大型对象可能会减慢应用程序的速度。最好使用ViewModels将数据与视图分离(例如,使用ViewModels),这些更改会保留这些数据

  • 第一种方法看似简单,但不推荐使用,正如您在开头提供的链接中所看到的:

    注意:自行处理配置更改可能会使更改更加复杂 更难使用替代资源,因为系统确实如此 不会自动为您应用它们。这项技术应该是 当您必须避免由于故障而重新启动时,被认为是最后的选择 大多数应用程序都不建议更改配置和配置

    请阅读。您将看到有两种处理配置更改的解决方案:

  • 您可以通过更新清单中的活动来声明自己正在处理更改。这样,您的活动将不会重新启动,并且将调用
    onConfigurationChanged()

    <activity ...
        android:configChanges="orientation|screenSize"
        ...>
    
    
    
  • 您可以通过
    onSaveInstanceState()
    函数将数据对象传递给新活动。传递大型对象可能会减慢应用程序的速度。最好使用ViewModels将数据与视图分离(例如,使用ViewModels),这些更改会保留这些数据

  • 第一种方法看似简单,但不推荐使用,正如您在开头提供的链接中所看到的:

    注意:自行处理配置更改可能会使更改更加复杂 更难使用替代资源,因为系统确实如此 不会自动为您应用它们。这项技术应该是 当您必须避免由于故障而重新启动时,被认为是最后的选择 大多数应用程序都不建议更改配置和配置


    将此添加到清单中

    android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
    
    如果configChanges包含uiMode,请将其删除。如果不想卸载uiMode,可以更新这些库

    androidx.appcompat:appcompat:1.2.0-rc01
    androidx.core:core:1.3.2
    

    将此添加到清单中

    android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
    
    如果configChanges包含uiMode,请将其删除。如果不想卸载uiMode,可以更新这些库

    androidx.appcompat:appcompat:1.2.0-rc01
    androidx.core:core:1.3.2