現在很多Android 手機日新月異,很多相容性問題難以解決,不過我們可以透過分析其中的問題所在地就可以慢慢的解決此類問題了。
Android 系統在第一次安裝某個應用的時候是會走Application類的,此類如果是自己寫的繼承的類,那麼就應該排查一下這裡面的第三方依賴在init的時候是否出現init失效或者init丟擲異常,先排查這個類是否有問題,再來看其他的地方,這樣才能夠精準定位問題所在。
題主所說的,需要按home鍵,也就是說虛擬按鍵Home按下時,在靜態的Application中某個init 的變數會改變,改變過後就會產生很多應用相容的問題,比如app bar 的主題發生變化,由"Theme.AppCompat.Light.DarkActionBar" 改變為最原始的"android:Theme.Light.NoTitleBar"這樣在Android 7.0以上的機型會報錯,所以請檢查是否在觸控home鍵的時候發生了application某個init的變數問題。
在以上問題都是正常的情況下,我們可以在進行深入的排查程式入口頁面,此頁面在頁面初始化的“onCreate()”方法中是否是有錯誤的主題變化或者是懸浮式的設定,此種設定需要適配Android 8.1系統,因為無論是主題適配還是狀態列適配,Android 8.1在程式碼中進行強制處理會讓頁面抖動或者是在頁面後臺執行後返回頂頁面的時候,發生儲存值或者非同步程式碼出錯導致閃退發生,這個時候最好結合logcat進行檢視。推薦按照官方配置mainfest,不要自己在java或kotlin程式碼中進行手動強制配置。
在某些情況下存在記憶體會洩漏的可能性,比如這個初始化的頁面是由非同步執行緒在網路請求的,此時如果返回讓此頁面在後臺掛載,極有可能記憶體洩漏。一般的框架和Android的looper機制在處理記憶體洩漏上面已經為我們處理了很多,所以如果說用框架處理的那就應該沒有問題,如果是手動寫handler或者asynctask,那麼多留心一下記憶體問題。還有如果此時在頁面元件賦值的時候,也有可能造成彈棧問題,注意賦值規範。
現在很多Android 手機日新月異,很多相容性問題難以解決,不過我們可以透過分析其中的問題所在地就可以慢慢的解決此類問題了。
初始化問題Android 系統在第一次安裝某個應用的時候是會走Application類的,此類如果是自己寫的繼承的類,那麼就應該排查一下這裡面的第三方依賴在init的時候是否出現init失效或者init丟擲異常,先排查這個類是否有問題,再來看其他的地方,這樣才能夠精準定位問題所在。
觸發物件問題題主所說的,需要按home鍵,也就是說虛擬按鍵Home按下時,在靜態的Application中某個init 的變數會改變,改變過後就會產生很多應用相容的問題,比如app bar 的主題發生變化,由"Theme.AppCompat.Light.DarkActionBar" 改變為最原始的"android:Theme.Light.NoTitleBar"這樣在Android 7.0以上的機型會報錯,所以請檢查是否在觸控home鍵的時候發生了application某個init的變數問題。
頁面初始化問題在以上問題都是正常的情況下,我們可以在進行深入的排查程式入口頁面,此頁面在頁面初始化的“onCreate()”方法中是否是有錯誤的主題變化或者是懸浮式的設定,此種設定需要適配Android 8.1系統,因為無論是主題適配還是狀態列適配,Android 8.1在程式碼中進行強制處理會讓頁面抖動或者是在頁面後臺執行後返回頂頁面的時候,發生儲存值或者非同步程式碼出錯導致閃退發生,這個時候最好結合logcat進行檢視。推薦按照官方配置mainfest,不要自己在java或kotlin程式碼中進行手動強制配置。
記憶體洩漏在某些情況下存在記憶體會洩漏的可能性,比如這個初始化的頁面是由非同步執行緒在網路請求的,此時如果返回讓此頁面在後臺掛載,極有可能記憶體洩漏。一般的框架和Android的looper機制在處理記憶體洩漏上面已經為我們處理了很多,所以如果說用框架處理的那就應該沒有問題,如果是手動寫handler或者asynctask,那麼多留心一下記憶體問題。還有如果此時在頁面元件賦值的時候,也有可能造成彈棧問題,注意賦值規範。