【发布时间】:2012-01-25 14:06:43
【问题描述】:
在我的 Activity 中,我在播放视频时覆盖了 onConfigurationChanged() 方法,并且我不想等待一秒钟,直到我更改设备方向后系统再次准备好继续播放视频。这工作得很好 - 我的视频继续流畅播放并且方向发生变化,而视频被重新调整以适合屏幕尺寸。
但我在执行这些步骤时发现了一个错误:
- 我在视频播放期间暂停了我的应用程序
- 我改变方向
- 我“恢复”我的应用程序
首先发生的事情:onConfigurationChanged() 被调用,而不是 onResume(),之后我的所有字段都应该被恢复!这会导致异常,其原因是除以零 - 某些字段等于 0,因为它尚未恢复。当然,这不是理想的行为。我的应用在以与暂停时相同的方向恢复时可以正常工作。
不过,我可以通过使用布尔值指示我的 Activity 是否已“完全加载”来规避这一点——也就是说,onResume() 方法已被调用。但我认为这不是一个非常干净的解决方案。
我的问题是:
- 这是预期的行为吗?我认为在 onResume() 之前调用 onConfigurationChanged() 很奇怪。这是一个错误吗?
-
我可以通过编程方式暂时“取消注册”我的应用程序,使其不再监听 onConfigurationChanged()(例如,在 onPause() 方法中取消注册)吗?由于此方法不会被调用,因为您必须为其注册一些侦听器,而是因为您在 AndroidManifest.xml 文件中放入了这一行而被调用:
android:configChanges="orientation"
【问题讨论】:
标签: android