android 卡頓分析

2021-09-19 07:20:13 字數 1376 閱讀 1268

android出現使用不流暢,卡頓及anr,主要原因有三個

1、cpu使用過高:

2、系統記憶體使用過高:

strictmode有兩個檢測策略:執行緒檢測策略(threadpolicy)和虛擬機器策略(vmpolicy)

threadpolicy檢測:自定義的耗時操作,磁碟讀寫,網路請求

strictmode.setthreadpolicy(new strictmode.threadpolicy.builder()//執行緒策略(threadpolicy)

.detectdiskreads()//檢測在ui執行緒讀磁碟操作

.detectdiskwrites()//檢測ui執行緒寫磁碟操作

.detectcustomslowcalls()//發現ui執行緒呼叫的哪些方法執行得比較慢

.detectresourcemismatches()//最低版本為api23 發現資源不匹配

.detectnetwork() //檢測在ui執行緒執行網路操作

.detectunbufferedio()

vmpolicy檢測:activity洩漏,closeable物件未關閉,sqlite使用完了未釋放,物件例項的個數

strictmode.setvmpolicy(new strictmode.vmpolicy.builder()//虛擬機器策略(vmpolicy)

.detectactivityleaks()//最低版本api11 使用者檢查 activity 的記憶體洩露情況

.detectcleartextnetwork()//最低版本為api23 檢測明文的網路

.detectfileuriexposure()//最低版本為api18 檢測file://或者是content://

.detectleakedclosableobjects()//最低版本api11 資源沒有正確關閉時觸發

.detectleakedregistrationobjects()//最低版本api16 broadcastreceiver、serviceconnection是否被釋放

.detectleakedsqlliteobjects()//最低版本api9 資源沒有正確關閉時回觸發

.setclassinstancelimit(hxhelper.class, 1)//設定某個類的同時處於記憶體中的例項上限,可以協助檢查記憶體洩露

3、ui阻塞:

ui阻塞呢主要也是兩個方面:一是主線程的訊息佇列中的訊息過多,造成我們的ui介面的一些互動事件來不及處理,被阻塞

二是**執行耗時,**執行耗時呢,可能是因為**本身執行起來就很耗時,比如io操作,網路請求,還有乙個原因就是等鎖,可能執行到這裡,鎖被其他執行緒給占用了,需要等待。還有乙個可能是ui介面布局太過複雜

android頁面卡頓

安卓手機應用中介面切換卡頓和滑動卡頓的區別是什麼,請從專業角度解釋?或者給出乙個開發者需要注意事項?於是直接貼我的答案 不過需要注意的是,我舉的例子並不是完備的。而且答題時間有限,而我打字有點慢.所以如果有錯也別打我oaq 另外 本答案基本基於 google 的 android開發指導。在andro...

卡頓分析01

1.卡頓由什麼造成的?卡頓不是乙個影響因素影響的,是很多因素影響的,比如前面學到的cpu 記憶體還有網路都會影響到卡頓 2.分析工具 sdk自帶工具 systrace 路徑 sdk platform tools systrace 需要python2.7環境 如果只有乙個裝置就可以不輸入裝置號了 wi...

android 滑動卡頓問題彙總

布局巢狀 太依賴weight 使用多層weight布局等可能會引起應用的卡頓。這個是主要的原因,好多次遇到卡頓都是布局出了問題。現在手機的運算速率都比較高,所以可以優先考慮是不是布局的問題 布局巢狀還會引起其他錯誤。布局盡量簡潔。原因一 滑動的時候需要預載入資料導致ui卡頓 原因二 在onpages...