2015-09-22 35 views
0

所以答案可能只是與內存有關。但我想要求確定...RecyclerView存在多個活動實例後會滯後

我有一些內容和水平recyclerview的活動。 horizo​​ntal recyclerview顯示最多20個項目,它們都是圖像。我使用Glide來加載這些圖像,並且recyclerview上的滾動條很棒,很平滑,很少滯後。當您點擊回收站視圖中的圖像項目時,它會打開相同的活動(但包含新數據)。這是問題開始的地方。

如果我打開多個活動> 10,每個活動的recyclerview會變得越來越慢,而生物會滯後更多。有沒有內存泄漏?我一開始以爲這是可以預料的,因爲我正在創建大量的活動,但後來我認爲它應該不重要,因爲如果內存是一個問題,每個活動都應該調用onPause()然後onDestroy()。

有誰知道這是預期的行爲還是真的有內存泄漏?活動滾動視圖也不會滯後,但是一旦創建了大量活動,回收站視圖就會一次。

回答

2

不,這不是預期的行爲,是的,肯定聽起來像是內存泄漏。不幸的是,我們無法真正幫助您在沒有看到更多代碼的情況下發現內存泄漏。我會檢查是否有任何對新活動內的前一個活動的引用,或任何靜態引用,或任何會導致以前的活動未被清理的內容。

您是否需要打開相同的活動,但需要新的實例?你想保持後面的堆棧行爲嗎?如果不是,則應重新使用相同的活動,但傳遞新的Intent以重新綁定新數據並進行活動singleTopsingleTask

+0

我確實需要保持後退堆棧行爲,以便重複使用相同的活動並不理想。然而,我在我的項目中添加了LeakCanary,發現AdMob的Interstitial正在泄漏...... – oUJi

0

在你的情況下開始一個新的活動並不是最好的選擇,要記住,當你開始一個新的活動是相同的,你有相同的layot和相同的意見,對我來說是多餘的。更好地更新當前的活動,例如..

將新數據傳遞給recyclerview並更新它。

根據新數據更新任何其他視圖以正確執行操作。

與您目前的方法相比,這樣做效率更高。