JazzyViewPager確實存在泄漏。
我跑了存儲器剖析,發現JazzyViewPager保持地圖的所有添加的看法:
private HashMap<Integer, Object> mObjs = new LinkedHashMap<Integer, Object>();
public void setObjectForPosition(Object obj, int position) {
mObjs.put(Integer.valueOf(position), obj);
}
它總是添加對象,但絕不會取消。
爲了解決這個問題,我添加了一個remove方法的JazzyViewPager:
public void removeObject(int position) {
Object removed = mObjs.remove(position);
if (removed != null) {
LogUtils.LOGD(TAG, "Removed obj at pos " + position);
}
}
,並呼籲它從我的適配器的destroyItem()
:
@Override
public void destroyItem(ViewGroup container, int position, Object obj) {
container.removeView(((JazzyViewPager)container).findViewFromObject(position));
// make sure to remove the reference from the jazzyviewpager map
((JazzyViewPager)container).removeObject(position);
}
我監視內存的使用情況,現在一切都很好。
努力!謝謝你也解決了我的問題 –