在啟動的Activity的onCreate里面做了太多的事情導(dǎo)致初始化activity太慢
onCreate做到精簡介褥,如果實(shí)在不行那就開異步任務(wù)株扛,這樣onCreate就不會因?yàn)閳?zhí)行太多任務(wù)都卡住服爷,可以順利的回調(diào)下面的生命周期继低,因?yàn)閍ctivity是在onResume的時候才是可視的
在start下一個activity的下一句代碼馬上就finish當(dāng)前的activity
其實(shí)一般情況下黑界,這種是不會造成啟動activity前黑屏的勉失,但是我們的項(xiàng)目中確認(rèn)遇到了羹蚣,所以我們的解決方案是在onAttachedToWindow方法中把上一個activity給finish掉,這樣就不會黑屏了乱凿,不能在onCreate或者onResume方法中finish掉上一個activity度宦,依然會黑屏踢匣,因?yàn)閛nCreate調(diào)用的時候activity還在初始化,并不可見戈抄,而onResume是activity剛剛可見离唬,但是還沒有依附于窗體,通過在onResume方法中去獲取控件的長寬都是0就可以知道划鸽,這時候activity其實(shí)還并不是我們平呈漭海看到的那個真實(shí)的activity界面狀態(tài),而onAttachedToWindow回調(diào)里面的控件長寬就不是0了裸诽,這時候整個activity已經(jīng)是依附與窗體了嫂用,onAttachedToWindow生命周期也比onResume晚調(diào)用
其實(shí)上面finish造成的啟動activity黑屏的真正原因是activity全屏設(shè)置
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);如果把這句代碼去掉之后,黑屏自然消失
網(wǎng)上的解決啟動activity黑屏的方法
通過設(shè)置activity的theme模式來把黑屏變成透明丈冬,這種會造成點(diǎn)擊了app之后嘱函,要過一會兒才能看到activity啟動界面,直觀上感覺啟動比較慢
通過設(shè)置activity的theme模式把windowBackground設(shè)置成一張背景圖片埂蕊,這種方式還是不錯的往弓,但是還有一個缺點(diǎn),點(diǎn)擊app之后可以馬上看到activity啟動背景圖蓄氧,但是要過兩秒之后才會執(zhí)行到這個activity的onCreate方法函似,所以會感覺在啟動界面停留太久時間,加上初始化3秒喉童,一共大概5秒撇寞,在啟動界面停留5秒的時間,確實(shí)感覺太久了
---------------------
原文:https://blog.csdn.net/lhd201006/article/details/53705892
版權(quán)聲明:本文為博主原創(chuàng)文章堂氯,轉(zhuǎn)載請附上博文鏈接蔑担!