在我的活动中,我在播放视频时覆盖了 onConfigurationChanged() 方法,并且我不想等待一秒钟,直到系统再次准备好在我更改设备方向后继续播放视频。这工作得很好 - 我的视频一直在流畅播放,方向也发生了变化,而视频会重新缩放以适应屏幕尺寸。
然而,当采取这些步骤时,我发现了一个错误:
发生的第一件事是: onConfigurationChanged() 被调用,而不是 onResume() 之后我的所有字段都应该被恢复!这会导致一个异常,其原因是除以零 - 某些字段等于 0,因为它尚未恢复。当然,这不是我们想要的行为。我的应用程序在以暂停的相同方向恢复时确实有效。
不过,我可以通过使用指示我的 Activity 是否已“完全加载”的布尔值来规避这一点——也就是说,已经调用了 onResume() 方法。但我认为这不是一个非常干净的解决方案。
我的问题是:
我能否以编程方式“取消注册”我的应用程序,使其暂时不监听 onConfigurationChanged()(例如,在 onPause() 方法中取消注册)?由于此方法不会被调用,因为您必须为其注册一些侦听器,但会因为您在 AndroidManifest.xml 文件中放入以下行而被调用:
android:configChanges="方向"
1-答案在http://developer.android.com/reference/android/app/Activity.html
在某些特殊情况下,您可能希望根据一种或多种类型的配置更改绕过 Activity 的重新启动。这是通过其清单中的 android:configChanges 属性完成的。对于您所说的在那里处理的任何类型的配置更改,您将收到对当前活动的 onConfigurationChanged(Configuration) 方法的调用,而不是重新启动。但是,如果配置更改涉及您不处理的任何配置更改,则该活动仍将重新启动并且不会调用 onConfigurationChanged(Configuration)。
因此,提前调用 onconfigurationchanged 以允许在再次开始活动之前进行更改是正常的。2-我对此不确定。
| 归档时间: |
|
| 查看次数: |
4718 次 |
| 最近记录: |