A. app的啟動白屏解決
在網上搜索了許多關於app啟動白屏的文章大致分為兩類
第一種是在style的app的theme 里設置
這種設置在點擊桌面點擊app時給人一種很遲鈍的感覺 反正我不會用這種方式
第二種方法是在app的theme里設置
然後把這個theme設置給application
接下來修正一下網上的一問題
假設app 有 A->B->C這三個簡單的層級 A是啟動頁(打開app的第一個activity)
1.有人說把這個theme設置給A界面的activity 如果這樣設置 假如你的app 在B或者C界面 你把app切換到後台開幾個站內存的app 讓自己的app被回收後再切換回來 你會發現app會白屏或者黑屏一會(顏色取決於你的主題)
2.有人說吧這個theme設置給 application 如果這樣設置會引起activity的背景錯亂 如actionbar出現launch_bg這張圖片和別的奇怪的問題 應為actionbar等系統控制項也引用了默認的theme 所以會出現那些奇怪的圖片
3.有人為了解決二中出現的問題說在activity的setcontenview前從新設置window的背景 至少我那樣試沒有成功 還說通過流的方式設置window來解決 圖片不能釋放的問題 我是真沒找到這種方法(如果有人知道請告訴我下)
下說說我的解決辦法吧
首先是APP的正常theme
首次載入activity的theme
新建一個BaseActivity類
新建的Activity都繼承至這個BaseActivity就行
下面來說說為什麼會出現白屏的情況尺扒畢吧 (這是網上查找的說法)
當打開一個Activity時,如果這個Activity所屬的應用還沒有在運行,系統會為這個Activity所屬的應用創建一個進程,但進程的創建與初始化都需要時間,在這個動作完成之前系統要做什麼呢?如果沒有任何反應的話,如果程序初始化的時間很長,用戶可能還以為沒有點到相應的位置。但此時所啟動的程序還沒初始化完,既無法顯示程序,又不能停在原處不做任何動作,怎麼辦?這就有了Starting Window的概念,也可以稱之為Preview Window。
Starting Window就是一個用於在應用程序進程創建並初始化成功前顯示的臨時窗口,擁有的Window Type是TYPE_APPLICATION_STARTING。在程序初始化完成前顯示這個窗口,以告知用戶系統已經知道了他要打開這個應用並做出了響應,當程序此頃初始化完成後顯示用戶UI並移除這個窗口。
這個Starting Window我們都見過,不過可能沒留意過,其實就是開啟程序時黑屏的那個窗口,夠丑的。不過也沒陵芹辦法,每個程序的界面都不是同的,系統只有默認顯示一個很簡單的窗口了。
如果所謂的Starting Window只是一個黑屏的窗口的話,那這個功能未免也太雞肋了。其實系統是可以根據每個程序的Theme顯示不同的樣子的。
啟動應用的時候,雖然我們的程序還沒初始化,但程序內的組件可是在程序安裝的時候就被系統分析注冊了的。我們可以針對每個Application和Activity設置不同的Theme,系統就是根據這個Theme初始化Starting Window的。Window布局的頂層是DecorView,Starting Window就是顯示一個空的但是應用了Activity指定的Theme(如果Activity沒有指定就用Application的)的DecorView。
在Theme中可以指定很多東西,如ActionBar的樣式,窗口的背景,Activity的圖標等,通過給Activity指定Theme,系統就可以在我們的應用初始化完成之前將這個Theme應用到Starting Window,這樣看起來就像我們的應用已經啟動起來了,只是數據內容還沒有初始化好。
所以,如果你的Activity的背景只是簡單的純色的話,最好直接通過Theme把它應用到Activity的Background,而不是設置為頂層Layout的背景,如果真的需要給頂層Layout設置背景,也可以給android:windowBackground設置一個和Activity UI相似的背景,為了防止Overdraw,在Activity的onCreate中通過setWindowBackground()再把窗口的背景設置為null。
系統在顯示Activity前顯示一個Starting Window僅發生在需要為啟動這個Activity創建進程時,一般情況下是一個應用的入口Activity(包含Lanuncher中顯示的圖標進入的Activity及被其他應用調用的Activity)。
還有一種情況就是應用內有多個進程的情況(通過android:process),比如你的程序需要用單獨的進程查看圖片,當從你的應用的主進程進入圖片瀏覽的Activity時,系統就會創建圖片瀏覽的進程,如果圖片瀏覽的Activity的需要使用的圖標和Application指定的圖標不一樣的話就要注意了,系統顯示圖片進程中的Activity的Starting Window時不會使用這個Activity在Manifest中通過android:icon指定的圖標,而只會使用Theme中指定的圖標,如果沒為這個Activity指定一個Theme或所指定的Theme中沒有指定android:icon的話,系統會使用Application標簽指定的android:icon,結果就是會看到Starting Window中顯示一個圖標,當Activity載入完後圖標會變為Activity在Manifest中指定的android:icon,有一個變化的過程。
所以說 那個白屏是 系統創建了一個啟動窗口 這里有一個連接說明 啟動窗口在什麼情況下創建
B. 為什麼app點進去白屏
如果是偶爾幾次打開軟體出現的問題,可能是因為手機運行軟體過多造成的卡頓,導致軟體脊滾無響應,一般清理後台後,重新打開軟體會解決。
如果只有打開某個軟體時,手機才會白屏,並且使用上述方法無效。可能廳配是手機本身運行內存較小,無法運行這個軟體。或者這個軟體本身有問題,無法打開。這種情況無法解決。只能放棄使用粗埋該軟體。此外,手機使用時間過長,造成卡頓,重啟手機可以解決。需要注意的是,手機本身出現質量問題,建扮凳指議返廠維修。
解決APP白屏的辦法:
手機:iphone13
系統:iOS 13
1、重新開關機後開啟嘗試。
2、進入手機設定-應用程序管理器-已下載-點擊出現問題的應用-清除數據嘗試。
3、卸載客戶端重新安裝嘗試。
4、更新下手機系統版本嘗試是否有改善。
5、備份手機數據(電話簿、簡訊息、多媒櫻敗余體文件等),恢復出廠設置(進入手機設定-重置-恢復出廠設定)。如果恢復出廠後問題依舊無枯襪法解決,將手機送至維修店進一步處理。
C. 手機打開app出現白屏什麼原因
若使用的是vivo手機,請參考以下方法排查處理:
1、請重啟手機,觀察是否恢復使用。
2、系統新版本提升了兼容性和穩定性,優化了性能,請進入設置--系統升級(部分機型為:設置--我的設備--iQOO UI版本),查看系統版本信息。如果不是最新版本,建議升級體驗。
3、多個應用程序在後台運行會佔用過多內存或其他資源族輪,手機超出負荷可能會出現異常,建議使用"一鍵加速"清理後台應用。
4、若使用個別第三方軟體時出現白屏,可能是該軟體與系統不兼容導致,建議進入應用商店下載最新版本應用。
5、進入設置--系統管理/更多設置--備份與重置--還原所有設置--還原。
註:還原所有設置不會刪除任何數據或媒體文件,僅會還原手機的所有設置(比中敬如設置的壁紙、解鎖樣式、WiFi、默認賣穗慎開啟程序、桌面布局等),以及部分第三方應用帳號需要重新登錄,請確認不影響軟體使用後再進行操作。為了數據安全,操作前建議提前備份手機數據。(可以進入雲服務--設備雲備份--備份數據類型--系統數據--返回--立即備份可備份部分系統設置和桌面布局;雲服務--數據同步--打開WLAN、藍牙等可將數據同步到雲服務)
6、若以上方法未能解決,請提前備份好設備數據,攜帶設備和購機憑證前往vivo客戶服務中心檢測。
溫馨提示:建議前往時,提前電話咨詢服務中心工作人員,確保工作人員在正常上班時間再前往,避免空跑,往返路上注意安全。