【发布时间】:2019-11-11 15:50:32
【问题描述】:
不,不是老问题的反刍,请多多包涵。我不想避免一般的活动娱乐(清单中没有android:configChanges),我不想仅仅因为我懒于实施实例保存而永久地固定我的方向(清单中没有android:screenOrientation)。
我有一个应用程序,用户可以进行三种可能的设置:1. 按照正常情况自动更改方向布局,2. 固定纵向,3. 固定横向。在我的情况下这是有道理的,因为纵向和横向显示显示不同的功能,并且用户可能希望限制为一个。不一定,但有可能。
该应用程序运行良好。我阅读了onCreate 中的首选项设置,如果我处于其中一种固定模式,则调用setRequestedOrientation。我让系统处理方向变化,我不要求自己处理变化。
唯一的性能问题是,例如,当应用程序以设备的纵向位置启动但固定为横向时,onCreate 将被调用两次,一次用于原始启动,一次用于setRequestedOrientation。它完美无缺,我处理得很好,但有性能损失,活动出现明显延迟。 (screenOrientation 固定在清单中,仅用于测试目的,启动看起来好多了,只需调用一次 onCreate。
所以,我正在寻找的是一种等效于清单 screenOrientation 设置的代码。我不能也不想在清单中指定它,但是从 onCreate 调用它对于性能来说已经有点晚了。
【问题讨论】:
-
尝试在 setContentView() 之前调用 setRequestedOrientation,甚至在 super.onCreate(savedInstanceState) 之前调用
-
没有骰子。我什至尝试将其移至
onStart,但没有区别......工作得很好,但与清单固定方案相比有明显的滞后。那个开始非常好。 -
onStart在onCreate之后被调用,所以没有变化是正常的。
-
嗯,这次没查,只是试了一下。 :-) 但是是的,是的。
-
另一种可能的解决方案,创建一个BaseActivity,你在onCreate中调用setRequestedOrientation,并让所有Activity都继承自它
标签: android screen-orientation