Android常见崩溃或闪退的问题描述及原因总结、及与性能相关的模块——持续更新
1、nullpointer——就是使用一個對象的時候還沒有對其進行初始化導致該問題
一般在何種情況下容易出現(xiàn)呢?
(1)父窗口+子窗口同時出現(xiàn)的,父窗口因為某種原因消掉了,子窗口還在,操作子窗口找不到父窗口的pid,就會出現(xiàn)問題
(2)加載過程中進行刷新或者其他點擊操作,可能某種資源還沒有初始化成功,就會出現(xiàn)該問題
(3)異常情況下,比如斷網(wǎng)了,比如需要連接的設備沒有連接,則相應資源拿不到,此時點擊某些按鈕,也會出現(xiàn)該問題
2、OOM——在視頻圖片的來回切換,比如橫豎屏的來回切換過程中比較容易出現(xiàn),因為本身機子比較卡,內(nèi)存小的話,加載比較大的圖片或視頻就容易這個問題
解決方案:
(1)可以把加載的處理從上層挪到底層,比如從上層的Java層挪到底層的C++層,這樣就會比較省內(nèi)存
(2)針對不同的像素的手機做不同的適配(比如圖片像素也發(fā)生變化,否則高像素的圖片在低像素的手機上也沒有感知)
3、卡死——遇到過很多次,開發(fā)的解釋基本上都是前一個界面是一個window,后一個界面也是一個window,然后前一個界面切到后一個界面的時候,前面的window沒消掉,導致覆在了后一個界面上方,結果就出現(xiàn)了卡死的問題
4、IOS上很容易出現(xiàn)一類問題——也就是安卓上的nullpointer的問題,是nil object的問題,特別容易出現(xiàn)的就是將nil object insert into dict中時,必然崩潰,而且這種情況很多,因為很多數(shù)據(jù)結構都用字典
5、內(nèi)存不足導致的崩潰——比如說內(nèi)存沒有釋放,一長條列表下有N個資源需要展示,不斷下拉,上面的資源沒有釋放,所分配的內(nèi)存越來越多,最后當然會崩潰
6、與性能相關的模塊——
容易出現(xiàn)內(nèi)存問題的模塊——
(1)圖片相關:連續(xù)發(fā)送圖片和查看圖片,重點是查看圖片(比如可循環(huán)來回查看圖片,之前的內(nèi)存都不釋放,就可能出現(xiàn)問題);尤其是查看的單張圖片很大的話
(2)視頻相關:不斷反復觀看返回繼續(xù)觀看,可能播放器的資源沒有釋放,導致內(nèi)存不斷增長
CPU問題——
(1)錯誤處理沒有加超時不斷重試,放在死循環(huán)里了——只要搞一個錯誤數(shù)據(jù),程序就會反復請求,結果導致程序必崩
(2)網(wǎng)絡請求:網(wǎng)絡請求很長時間內(nèi)拿不到回應,需要設置重試和超時時間,并且在不同的網(wǎng)絡情況下要進行不同關注,目前主要是在WiFi和4G下
(3)處理圖片解析、視頻解析等
(4)一直不停的在UI上進行更新處理,比如說網(wǎng)速條由很多個小點點組成,然后網(wǎng)速不停在變化,這些個小點點就需要不停的更新,程序需要不停的去面UI;以及下載的進度的展示,比如是通過一個圓圈或者一個橫條展示進度,如果每收到一個0.1%的回調(diào),就在UI上更新,就會導致CPU不斷升高,手機很燙,最后崩潰
對于這個情況來說,如何處理呢?
網(wǎng)速條的小點變化,需要研究不同的IOS系統(tǒng)下的不同函數(shù),出現(xiàn)過IOS9.3剛出現(xiàn)時,程序崩潰,因為系統(tǒng)API的兼容問題
下載進度展示:可以不用每收到一個回調(diào)就更新界面,可以等待每5%的時候,再更新UI
7、與兼容相關的問題——
不同的sdk的API,或者不同IOS系統(tǒng)的API,具體調(diào)用時可能會有差異,另外不同安卓手機,可能rom在廠家進行了一些處理之后,也會有差異,針對不同的情況都需要進行處理;
所以根據(jù)2-8原理,優(yōu)先保證占比最多的系統(tǒng)和機型的兼容,之后再針對更多機型進行適配。
在安卓端,會存在很多低端機,比如幾年前的老手機,本身配置較低,有些處理在這些機器上就跑不起來;或者是:操作系統(tǒng)的版本很低
在IOS端,目前的4S、5、5C都可以算在低端機的范疇上,IOS7就是低端系統(tǒng),這些系統(tǒng)上很容易因為本身配置低更容易出現(xiàn)性能問題,表現(xiàn)出來的就是同樣的操作,在這些機器上更容易閃退
5S以下的機器都是32位的系統(tǒng),以上都是64位的系統(tǒng),針對數(shù)據(jù)的處理也需要特別對待,比如后臺服務器升級了,數(shù)據(jù)都升級成64位的了,那對于32位的系統(tǒng)要怎么處理要提前確認好
總結
以上是生活随笔為你收集整理的Android常见崩溃或闪退的问题描述及原因总结、及与性能相关的模块——持续更新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平台架构用户系统
- 下一篇: DirectxMeshes