在我的Activity中,我在播放视频时覆盖onConfigurationChanged()方法,我不想等待一段时间,直到系统再次准备好在我更改设备的方向后继续播放视频。这很好用 - 我的视频保持流畅播放并且方向发生变化,而视频重新调整到适合屏幕尺寸。
然而,当我采取这些步骤时,我发现了一个错误:
首先发生了什么:onConfigurationChanged()被调用,而不是onResume(),之后我的所有字段都应该被恢复!这会导致异常除以零作为原因 - 某些字段等于0,因为它尚未恢复。当然,这不是理想的行为。我的应用程序确实有效,当它以与暂停相同的方向恢复时。
但是,我可以通过使用一个布尔值来规避我的Activity是否已经“完全加载” - 也就是说,已经调用了onResume()方法。但我认为这不是一个非常干净的解决方案。
我的问题是:
我是否可以通过编程方式“取消注册”我的应用暂时监听onConfigurationChanged()(例如,在onPause()方法中取消注册)?因为你必须为它注册一些监听器,所以不会调用此方法,但是因为你将AndroidManifest.xml文件放入这一行而被调用:
机器人:configChanges = “取向”
答案 0 :(得分:1)
在http://developer.android.com/reference/android/app/Activity.html
中的答案在某些特殊情况下,您可能希望绕过重新启动 基于一种或多种配置更改的活动。这是 在其清单中使用android:configChanges属性完成。任何 你会说你在那里处理的配置改变类型 接到你当前活动的电话 onConfigurationChanged(配置)方法而不是 重新启动。如果配置更改涉及任何您不这样做 但是,处理活动仍将重新启动 不会调用onConfigurationChanged(配置)。
所以通常会先调用onconfugrationchanged来允许在再次启动活动之前进行更改。 2-我不确定这个..