onWindowFocusChanged重要作用(得到/失去焦点call) 、
onWindowFocusChanged重要作用
Activity生命周期中,onStart, onResume, onCreate都不是真正visible的時(shí)間點(diǎn),真正的visible時(shí)間點(diǎn)是onWindowFocusChanged()函數(shù)被執(zhí)行時(shí)。
譯注:從onWindowFocusChanged被執(zhí)行起,用戶可以與應(yīng)用進(jìn)行交互了,而這之前,對(duì)用戶的操作需要做一點(diǎn)限制。
比如我們?cè)谧鯫TT項(xiàng)目時(shí)候,我們就是在這onWindowFocusChanged來(lái)獲取主按鍵的具體位置和寬高的,而在其他標(biāo)準(zhǔn)生命周期的接口中調(diào)用都是獲取不到的,比如在onResume,onStart中都獲取不到信息。
這個(gè)onWindowFocusChanged指的是這個(gè)Activity得到或者失去焦點(diǎn)的時(shí)候 就會(huì)call。。
也就是說(shuō) 如果你想要做一個(gè)Activity一加載完畢,就觸發(fā)什么的話 完全可以用這個(gè)!!!
使用一個(gè)view的getWidth() getHeight() 方法來(lái)獲取該view的寬和高,返回的值卻為0。
如果這個(gè)view的長(zhǎng)寬很確定不為0的話,那很可能是你過(guò)早的調(diào)用這些方法,也就是說(shuō)在這個(gè)view被加入到rootview之前你就調(diào)用了這些方法,返回的值自然為0.
解決該問(wèn)題的方法有很多,主要就是延后調(diào)用這些方法。可以試著在onWindowFocusChanged()里面調(diào)用這些方法,驗(yàn)證時(shí)可以獲取到View的寬高的。
相關(guān)執(zhí)行打印:
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)
?
如何監(jiān)控一個(gè)Activity加載完畢(完成渲染)-onWindowFocusChanged我也不知道是不是專(zhuān)門(mén)用來(lái)監(jiān)控Activity的。但通過(guò)這個(gè)事件可以實(shí)現(xiàn)當(dāng)一個(gè)Activity完全加載完畢后,然后就執(zhí)行。
1 @Override 2 public void onWindowFocusChanged(boolean hasFocus) { 3 // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus) 4 }這個(gè)onWindowFocusChanged指的是這個(gè)Activity得到或者失去焦點(diǎn)的時(shí)候 就會(huì)call。。
?
也就是說(shuō) 如果你想要做一個(gè)Activity一加載完畢,就觸發(fā)什么的話 完全可以用這個(gè)!!!
?
?
?
有人說(shuō)可以利用Activity的生命周期。
?
onResume
當(dāng)你的Activity成為屏幕前端Activity后onResume將被立刻調(diào)用。在這個(gè)時(shí)間點(diǎn)你的Activity處于運(yùn)行狀態(tài)并且能與用戶進(jìn)行交互。你可以接受鍵盤(pán)和觸摸輸入,并在屏幕上顯示你的用戶界面。當(dāng)你的Activity失去屏幕前端焦點(diǎn)時(shí)onResume也會(huì)被調(diào)用,并且這個(gè)Activity最終退出,而另一Activity將被彈到前端。這也是你的Activity將開(kāi)始(或恢復(fù))的地方,并且可以做一些需要的事情比如更新用戶界面(例如:接收位置更新或者運(yùn)行一個(gè)動(dòng)畫(huà))。
這==個(gè)。?
?
我試過(guò)。是無(wú)法實(shí)現(xiàn)里面控件加載完畢后,取得他們的狀態(tài)的!
?
?
android API :
?
void onWindowFocusChanged(boolean hasFocus)?
Called when the current Window of the activity gains or loses focus.
?
得到焦點(diǎn)是hasFocus == true 反之亦然!
API 才是王道!!!
轉(zhuǎn)載于:https://www.cnblogs.com/zl1991/p/5150270.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的onWindowFocusChanged重要作用(得到/失去焦点call) 、的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ArcGIS For JavaScrip
- 下一篇: Cors 跨域Access-Contro