以编程方式设置方向,无需 activity-recreation?

Set orientation programmatically, without activity-recreation?

每当我使用 setRequestedOrientation(int) 时,它的行为与我在 Manifest.xml 中声明方向时的行为不同。 (这是预期的)

我读到(来自文档):

If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)

实际上这意味着每当启动应用程序时,虽然设备的方向不是 setRequestedOrientation(int) 设置的方向,activity 将被创建两次(一次 'normally' 并一次反映请求的方向)。

到目前为止,不值得让我的活动 100% 防止配置更改,我想要的是一种在代码中 设置请求方向的方法,而无需创建我的活动两次。有办法吗?

(最好不要使用 hackish 解决方法,例如在 configChanges 中设置 'orientation' 标志)

编辑:

接受的答案是正确的,它根本不符合逻辑(没有意义)。对于新读者,我所做的是添加一个 stub-activity(主要是空的 activity,作用不大)。它所做的只是在它与我想要的不同时使用 getRequestedOrientation(),我将调用 setRequestedOrientation(int),否则启动我想要的 activity 并在其 onCreate 中也调用 setRequestedOrientation(int) 使其保持在要求的方向。

不,那没有意义。如果您以编程方式设置方向,Activity 已经 运行,然后您才能执行任何操作来更改每个方向的重复创建。