activity生命週期中,onstart, onresume, oncreate都不是真正visible的時間點,真正的visible時間點是onwindowfocuschanged()函式被執行時。
譯註:從onwindowfocuschanged被執行起,使用者可以與應用進行互動了,而這之前,對使用者的操作需要做一點限制。
比如我們在做ott專案時候,我們就是在這onwindowfocuschanged來獲取主按鍵的具體位置和寬高的,而在其他標準生命週期的介面中呼叫都是獲取不到的,比如在onresume,onstart中都獲取不到資訊。
這個onwindowfocuschanged指的是這個activity得到或者失去焦點的時候 就會call。。
也就是說 如果你想要做乙個activity一載入完畢,就觸發什麼的話 完全可以用這個!!!
使用乙個view的getwidth() getheight() 方法來獲取該view的寬和高,返回的值卻為0。
如果這個view的長寬很確定不為0的話,那很可能是你過早的呼叫這些方法,也就是說在這個view被加入到rootview之前你就呼叫了這些方法,返回的值自然為0.
解決該問題的方法有很多,主要就是延後呼叫這些方法。可以試著在onwindowfocuschanged()裡面呼叫這些方法,驗證時可以獲取到view的寬高的。
相關執行列印:
1: entry: onstart—->onresume—->onattachedtowindow———–>onwindowvisibilitychanged–visibility=0———->onwindowfocuschanged(true)——->
exit: onpause—->onstop—->onwindowfocuschanged(false) ———————- (lockscreen)
exit : onpause—–>onwindowfocuschanged(false)——–>onwindowvisibilitychanged–visibility=8————>onstop(to another activity)
onWindowFocusChanged重要作用
activity生命週期中,onstart,onresume,oncreate都不是真正visible的時間點,真正的visible時間點是onwindowfocuschanged 函式被執行時。譯註 從onwindowfocuschanged被執行起,使用者可以與應用進行互動了,而這之前,對使用者...
onWindowFocusChanged重要作用
activity生命週期中,onstart,onresume,oncreate都不是真正visible的時間點,真正的visible時間點是onwindowfocuschanged 函式被執行時。譯註 從onwindowfocuschanged被執行起,使用者可以與應用進行互動了,而這之前,對使用者...
onWindowFocusChanged重要作用
activity生命週期中,onstart,onresume,oncreate都不是真正visible的時間點,真正的visible時間點是onwindowfocuschanged 函式被執行時。譯註 從onwindowfocuschanged被執行起,使用者可以與應用進行互動了,而這之前,對使用者...