Android 为什么调用surface Changed时重置所有变量?

Android 为什么调用surface Changed时重置所有变量?,android,Android,我有一个扩展surfaceview并实现SurfaceHolder.Callback的类 我只是想用x和y位置制作一个简单的位图,它的位置会随着时间而更新 在我的代码中,除了在从protrait更改为横向位置或相反位置时调用surfacechanged方法时,x和y值都会重置回默认值之外,其他一切都可以正常工作 调用surfacechanged方法后,如何保持x和y位置不变? 我的下一个问题是,当调用surface changed时,如何使我的游戏方向仅保持原形,而不改变为横向? 有什么帮助吗

我有一个扩展surfaceview并实现SurfaceHolder.Callback的类 我只是想用x和y位置制作一个简单的位图,它的位置会随着时间而更新

在我的代码中,除了在从protrait更改为横向位置或相反位置时调用surfacechanged方法时,x和y值都会重置回默认值之外,其他一切都可以正常工作

调用surfacechanged方法后,如何保持x和y位置不变? 我的下一个问题是,当调用surface changed时,如何使我的游戏方向仅保持原形,而不改变为横向? 有什么帮助吗


AndriodManifest.xml中的thx

android:configChanges

列出活动将自行处理的配置更改。什么时候 配置更改在运行时发生,活动将关闭 默认情况下重新启动,但使用此 属性将阻止重新启动活动。相反 活动仍在运行,其onConfigurationChanged()方法为 打电话来

注意:应避免使用此属性,并仅作为最后一个属性使用 求助有关详细信息,请阅读处理运行时更改 关于如何正确处理由于配置更改而导致的重新启动

这样写吧

android:configChanges="orientation|screenSize"

但有人建议这样做

这个问题最好是在短期内处理

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

// Your code
}

包含曲面的活动将在方向更改时重新创建。这是Android的正常行为。请学习活动生命周期。您可以强制活动仅在清单中显示。所有内容都在developer.android.comthx上有文档记录,我想知道如何在清单中保护它。
注意:应该避免使用此属性,并且只能作为最后手段使用。
您甚至引用了文档,仍然推荐它!这是一个令人讨厌的黑客行为,它可能比任何其他原因都要为Android应用程序中更多的崩溃和错误负责,因为它隐藏了生命周期回调处理中的错误,用于屏幕方向的更改,但不包括导致活动被重新创建的其他场景——大多数开发人员甚至都没有考虑过,更不用说测试了-1.thx伙计,我读到了关于生命周期的活动这对我很有帮助