最新在项目中出现内存泄露的问题,找半天无法定位问题
无奈只能采用二分法逐个排除,最后定位到com.chanven.lib:cptr 这个库
https://github.com/Chanven/CommonPullToRefresh
PtrFrameLayout 这个类557行代码如下:
int delay = (int)((long)this.mLoadingMinTime - (System.currentTimeMillis() - this.mLoadingStartTime));
if (delay <= 0) {
if (DEBUG) {
PtrCLog.d(this.LOG_TAG, "performRefreshComplete at once");
}
this.performRefreshComplete();
} else {
this.postDelayed(new Runnable() {
public void run() {
PtrFrameLayout.this.performRefreshComplete();
}
}, (long)delay);
if (DEBUG) {
PtrCLog.d(this.LOG_TAG, "performRefreshComplete after delay: %s", new Object[]{delay});
}
}
如果在ptrFrameLayout 没有加载的情况下调用 refreshComplete方法,则会出现delay值极大的情况
这个库竟然还有1000多个star,不知道这些人是否遇到了同样的问题。
引库有风险,
使用需谨慎。
本文详细记录了在项目中遇到的内存泄露问题定位过程。通过二分法排查,最终锁定问题源头为com.chanven.lib:cptr库中的PtrFrameLayout类。文章深入分析了该类557行代码存在的潜在问题,揭示了在特定条件下调用refreshComplete方法可能导致的延迟值极大现象。

被折叠的 条评论
为什么被折叠?



