android檢測卡頓問題,recycleview卡頓
recycleview雙列表聯動卡頓問題一直沒解決,今天找了個檢測卡頓原因的神器,附上地址
https://github.com/markzhai/AndroidPerformanceMonitor
整合步驟先簡單,
1.加依賴
compile 'com.github.markzhai:blockcanary-android:1.5.0'
2.新建一個類
package com.huarenbang.zndc.utils;
import android.content.Context;
import com.github.moduth.blockcanary.BlockCanaryContext;
import com.github.moduth.blockcanary.internal.BlockInfo;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
/**
* author : lwp
* date :2018/8/30
* Email:1074762678@qq.com
* 檢測卡頓
*/
public class AppBlockCanaryContext extends BlockCanaryContext {
/**
* Implement in your project.
*
* @return Qualifier which can specify this installation, like version + flavor.
*/
public String provideQualifier() {
return "unknown";
}
/**
* Implement in your project.
*
* @return user id
*/
public String provideUid() {
return "uid";
}
/**
* Network type
*
* @return {@link String} like 2G, 3G, 4G, wifi, etc.
*/
public String provideNetworkType() {
return "unknown";
}
/**
* Config monitor duration, after this time BlockCanary will stop, use
* with {@code BlockCanary}'s isMonitorDurationEnd
*
* @return monitor last duration (in hour)
*/
public int provideMonitorDuration() {
return -1;
}
/**
* Config block threshold (in millis), dispatch over this duration is regarded as a BLOCK. You may set it
* from performance of device.
*
* @return threshold in mills
*/
public int provideBlockThreshold() {
return 1000;
}
/**
* Thread stack dump interval, use when block happens, BlockCanary will dump on main thread
* stack according to current sample cycle.
* <p>
* Because the implementation mechanism of Looper, real dump interval would be longer than
* the period specified here (especially when cpu is busier).
* </p>
*
* @return dump interval (in millis)
*/
public int provideDumpInterval() {
return provideBlockThreshold();
}
/**
* Path to save log, like "/blockcanary/", will save to sdcard if can.
*
* @return path of log files
*/
public String providePath() {
return "/blockcanary/";
}
/**
* If need notification to notice block.
*
* @return true if need, else if not need.
*/
public boolean displayNotification() {
return true;
}
/**
* Implement in your project, bundle files into a zip file.
*
* @param src files before compress
* @param dest files compressed
* @return true if compression is successful
*/
public boolean zip(File[] src, File dest) {
return false;
}
/**
* Implement in your project, bundled log files.
*
* @param zippedFile zipped file
*/
public void upload(File zippedFile) {
throw new UnsupportedOperationException();
}
/**
* Packages that developer concern, by default it uses process name,
* put high priority one in pre-order.
*
* @return null if simply concern only package with process name.
*/
public List<String> concernPackages() {
return null;
}
/**
* Filter stack without any in concern package, used with @{code concernPackages}.
*
* @return true if filter, false it not.
*/
public boolean filterNonConcernStack() {
return false;
}
/**
* Provide white list, entry in white list will not be shown in ui list.
*
* @return return null if you don't need white-list filter.
*/
public List<String> provideWhiteList() {
LinkedList<String> whiteList = new LinkedList<>();
whiteList.add("org.chromium");
return whiteList;
}
/**
* Whether to delete files whose stack is in white list, used with white-list.
*
* @return true if delete, false it not.
*/
public boolean deleteFilesInWhiteList() {
return true;
}
/**
* Block interceptor, developer may provide their own actions.
*/
public void onBlock(Context context, BlockInfo blockInfo) {
}
}
3.在application的oncreate方法里加上:
BlockCanary.install(this, new AppBlockCanaryContext()).start();
然後執行就行,有點像leak這個.
最後我發現原因是載入圖片Glide的問題,我看下提示的程式碼行,
Glide.with(MyApplication.getContext()).load(mlist.get(position).getImg()).into(holder.ig_image);
adapter裡這個context我直接給的是application的,貌似已經知道了,改成從adapter的構造器傳進來的context試試
ok,完美,已經解決.上圖:
相關文章
- 質量監控-卡頓檢測
- Android效能UI卡頓AndroidUI
- linux df -h卡頓問題(卡住)Linux
- WPF頻繁更新UI卡頓問題UI
- Android效能優化----卡頓優化Android優化
- Android 教你如何發現 APP 卡頓AndroidAPP
- 移動APP卡頓問題解決實踐APP
- 記解決 Postman 卡頓,佔 CUP,卡死問題Postman
- Android Studio debug斷點 介面卡頓Android斷點
- Android卡頓優化學習筆記Android優化筆記
- 優化動畫卡頓:卡頓原因分析及優化方案優化動畫
- div拖動遇到iframe卡頓的問題解決
- 蘋果容器超出內容overflow滑動卡頓問題蘋果
- 基於vue解決大資料表格卡頓問題Vue大資料
- oracle資料庫卡頓Oracle資料庫
- openCV開啟高畫質攝像頭卡頓的問題OpenCV
- 【slam】解決VirtualBox執行ubuntu18.04.6卡頓的問題SLAMUbuntu
- 如何解決快應用頁面滑動卡頓問題
- Flutter卡頓優化錦輯Flutter優化
- go 代理穩定不卡頓Go
- Windows 記錄一次磁碟相關的PC卡頓問題Windows
- 解決 wsl2/WSLg 聲音卡頓不連續問題
- 電腦出現常見問題卡頓,教你優化提速技巧優化
- 深入解析:Android卡頓檢測及優化專案實戰經驗總結,任君白嫖Android優化
- 電腦滑鼠卡頓不流暢是什麼原因 電腦滑鼠卡頓怎麼解決
- Android GPU呈現模式原理及卡頓掉幀淺析AndroidGPU模式
- Android效能優化——列表類控制元件卡頓優化Android優化控制元件
- (轉)解決XMind執行卡頓
- 音影片FAQ(一):影片直播卡頓
- oracle一次卡頓案例(三)Oracle
- oracle一次卡頓案例(四)Oracle
- iOS App卡頓監控(Freezing/Lag)iOSAPP
- win10右鍵卡頓怎麼辦_win10滑鼠右鍵卡頓如何解決Win10
- win10 固態卡頓怎麼辦_win10電腦硬碟卡頓如何解決Win10硬碟
- win10電腦桌面卡頓怎麼辦 win10桌面卡頓的方法Win10
- Performance選項卡筆記以及分析vue頁面卡頓ORM筆記Vue
- iOS探索:UI檢視之卡頓、掉幀及繪製原理iOSUI
- win10系統卡頓怎麼解決 win10系統卡頓的解決方法Win10