android-Ultra-Pull-To-Refresh
android-Ultra-Pull-To-Refresh copied to clipboard
内存泄漏
/** * 当mLoadingStartTime为0时 这里强转会越界 转成一个很大的整数 * 后面执行postDelayed(mPerformRefreshCompleteDelay, delay) 会造成内存泄漏 * 可把delay 改成 long * long delay = (mLoadingMinTime - (System.currentTimeMillis() - mLoadingStartTime)); * */
final public void refreshComplete() { if (DEBUG) { PtrCLog.i(LOG_TAG, "refreshComplete"); }
if (mRefreshCompleteHook != null) {
mRefreshCompleteHook.reset();
}
int delay = (int) (mLoadingMinTime - (System.currentTimeMillis() - mLoadingStartTime));
if (delay <= 0) {
if (DEBUG) {
PtrCLog.d(LOG_TAG, "performRefreshComplete at once");
}
performRefreshComplete();
} else {
postDelayed(mPerformRefreshCompleteDelay, delay);
if (DEBUG) {
PtrCLog.d(LOG_TAG, "performRefreshComplete after delay: %s", delay);
}
}
}
希望修复
postDelayed的参数描述本来也是long,所以虽然mLoadingStartTime会被更新,但为了消除隐患,同意楼主的意见
希望修复
这个东西也太无聊了吧
这个问题还挺严重的呢,请修改下,现在的版本可以这样避免:
mPtrLayout.refreshComplete();
改为
if (mPtrLayout.isRefreshing()) {
mPtrLayout.refreshComplete();
}
@LeonHover 哇,你是对的,我也是这样想的,在每个refreshComplete前面带上 isRefreshing
学习一下,顺便优化,把那个if也加上