在我的Activity中,我重寫了onConfigurationChanged()方法,因爲它正在播放視頻,我不想等待一秒鐘,直到系統再次準備就緒在更改設備的方向後繼續播放視頻。這工作得很好 - 我的視頻一直播放流暢,方向得到改變,而視頻被重新調整以適應屏幕尺寸。Android - onConfigurationChanged()在暫停之前調用Activity之前調用Activity
然而,我發現了一個錯誤時,採取以下步驟:
- 我在視頻播放期間暫停我的應用程序
- 我改變方向
- 我「恢復」我的應用程序
第一事情會發生什麼:onConfigurationChanged()被調用,而不是onResume()之後,所有的字段應該被恢復!這會導致一個Exception除以零作爲原因 - 一些字段等於0,因爲它尚未恢復。當然這不是期望的行爲。當我的應用程序以與它暫停的方向相同的方向恢復時,它的確可以工作。
雖然我可以通過使用指示我的Activity是否「完全加載」的布爾值來繞過這個問題,也就是說,onResume()方法已經調用。但我認爲這不是一個很乾淨的解決方案。
我的問題是:
- 這是預期的行爲?我認爲onConfigurationChanged()在onResume()之前被調用是很奇怪的。這是一個錯誤?
我可以通過編程方式「註銷」我的應用程序從暫時監聽onConfigurationChanged()(例如,在onPause()方法中取消註冊它)嗎?由於這種方法不會被調用,因爲你必須註冊一些監聽器,但被調用,因爲你在AndroidManifest.xml文件,就把這行:
機器人:configChanges =「方向」
這不是一個回答我的問題。我知道onResume()不會被調用,如果我的應用程序正在運行,我重寫onConfigurationChanged()。問題是在我的應用程序暫停時方向發生變化的上下文中提出的 - 因此,onResume()應該在恢復時調用。它確實被調用,但不會在onConfigurationChanged()之前,這就是問題所在。我已經閱讀了您提供的文檔,以至於不能啓發我,但無論如何thx。 – Timmos