onWindowFocusChanged重要作用

2021-06-18 07:33:45 字數 1069 閱讀 3852

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)------->

2. exit:  onpause---->onstop---->onwindowfocuschanged(false)  ---------------------- (lockscreen)

3. 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被執行起,使用者可以與應用進行互動了,而這之前,對使用者...