Android OnConfiguration Changed()仅在某些情况下可用

Android OnConfiguration Changed()仅在某些情况下可用,android,configuration,orientation,Android,Configuration,Orientation,我偶然发现了一个问题,当屏幕在横向方向关闭时,某些设备会将应用程序“旋转”回纵向位置(因为锁屏仅为纵向或类似位置)。在发布这篇文章之前,我做了一些研究,最流行的做法是修改应用程序的配置更改过程,以防止在配置更改后重新创建活动 但禁用活动娱乐对我来说不是一个解决方案,因为我的应用程序支持sepparate布局等的两个方向 所以我想了解一下,是否只有在特殊情况下(屏幕关闭,方向为横向)才可以禁用配置更改?还是覆盖onConfigurationChanged()然后在该函数内手动管理活动的正确方法(我

我偶然发现了一个问题,当屏幕在横向方向关闭时,某些设备会将应用程序“旋转”回纵向位置(因为锁屏仅为纵向或类似位置)。在发布这篇文章之前,我做了一些研究,最流行的做法是修改应用程序的配置更改过程,以防止在配置更改后重新创建活动

但禁用活动娱乐对我来说不是一个解决方案,因为我的应用程序支持sepparate布局等的两个方向

所以我想了解一下,是否只有在特殊情况下(屏幕关闭,方向为横向)才可以禁用配置更改?还是覆盖onConfigurationChanged()然后在该函数内手动管理活动的正确方法(我想在方向改变时简单地设置不同的布局资源根本无法解决问题)

还是覆盖OnConfiguration Changed()然后在该函数内手动管理活动的正确方法

在某种程度上是的

无法以编程方式设置configChanges属性。我想这与活动的创建方式有关。它们首先从XML创建,然后调用活动实现中被重写的方法。API中没有允许您更改configChanges属性的内容


现在在你的情况下,听起来你不需要这么做。如果您支持两种方向,那么如果用户锁定设备并将其旋转回来,这又有什么关系呢?从用户体验的角度来看,我们知道它再次处于纵向模式。因此,你的应用程序在打开时应该进行备份。

这更像是一个优化问题。通常,当发生此活动时,调试器会检测到某种类型的重载(跳过了…帧消息)。另一个问题是,在重新创建活动后,它被强制进入后台状态(因为屏幕处于关闭状态,活动不可见),而不是桌面()。这会导致其他一些小故障,主要是因为我在onStop()中还有额外的工作。@aphelion我需要查看一些代码。但是你的问题在于你的代码和在主线程上执行的太多。我的活动有1,8K代码行长,远远超过了stackOverflow中的最大字符限制:D关于这些消息,我在正常情况下(旋转设备等时)不会收到这些消息。我只有在出现问题的bug时才会收到此消息。