我的應用程序中有兩種ArrayAdapter,它們同時加載(或多或少)動態數據。 第一個綁定到一個線程,每秒觸發一次線程刷新數據。 第二個使用onClick操作刷新數據。釋放未使用在創建新的時候查看
現在,當我運行我的應用程序時,我可以看到與dumpsys meminfo,查看計數器 不斷增加(而與線程片段)。 顯然這會在幾秒/分鐘後導致巨大的內存泄漏。與onClick相同, 也會發生。
我的假設是,那些「舊」數據仍然存儲在這些視圖內,並不會 獲得釋放。有沒有辦法刪除每個舊視圖? 我的適配器位於此處; https://github.com/Blechd0se/android_packages_apps_AeroControl/blob/master/AeroControl/src/com/aero/control/adapter/AeroAdapter.java
使用適配器的主要方法在這裏(createList()); https://github.com/Blechd0se/android_packages_apps_AeroControl/blob/master/AeroControl/src/com/aero/control/fragments/AeroFragment.java
或者還有另一種方法來釋放那些不需要的視圖嗎?
編輯: 我找到了一個解決方案,如果有人感興趣; 如上所述,我需要使用notifyDataSetChanged() - 方法,只要我更改數據。 這隻有在使用List的情況下才有可能。在我的例子中,它的List<adapterInit>
其中 我使用上述方法以及clear()
。另外setAdapter每秒 是一個非常糟糕的主意。現在我只更改數據,結果如預期。 View-Count 從〜15.000下降到100-200。 補丁可以在我的github上找到。
即使我添加類似的東西;如果(適配器!=空)新的適配器其他adapter.notifyDataSetChanged()它仍然不會工作。意見不斷增加,我不知道爲什麼。我試圖將數據結構更改爲List,所以我可以調用clear-Method,但它仍然會創建無限的視圖。 – Blechd0se
我看到你的最新編輯,問題解決了嗎?如果您仍然遇到問題,我可以添加一些猜測。 – NameSpace
大部分問題都解決了。非常感謝你!唯一的缺點;它現在在每個onPause() - > onResume()上創建一個新的視圖(列表視圖),這是一種很好的方法。如果你也有解決方案,我會很高興。 – Blechd0se