如何優化listview控制項的記憶體占用

2021-10-04 03:30:37 字數 953 閱讀 5904

inform下需要每隔幾秒向listview中寫入一行資料(每行10列),實測記憶體增長非常明顯,大約每分鐘增加0.1m

由於程式需要長期穩定執行,請教下如何優化記憶體問題。

舊的資料可以捨棄,但優先考慮保留以方便檢視,另外刪除舊的行會導致行號變動,從而後台執行緒中對某一行的操作錯誤。

不能向控制項裡邊插入「過多的」資料,控制項主要是用來顯示,不是用來儲存資料的。如果你說「刪除listview中的行號有問題」,那麼一定是行號設計需要 重構(就算是listview中只有70行資料,也應該可以顯示2500行號)。當你的資料過多時,必須重新設計你的檢視的業務邏輯,檢視上只顯示最近的 少量資料而不是全部。

把資料儲存到vector裡,listview從vector提取資料顯示。

既然又想不占用記憶體,還想優先考慮保留以方便檢視,刪除舊的行會導致行號變動等等引起的一系列問題,單單是乙個控制項做不到。

把寫入的資料存放到某個地方,分批的形式載入到listview中,根據滑鼠滾輪進行分量載入舊資料,同時移除不需要看到的資料。

是這樣的,後台有兩個執行緒對新加入的行進行處理和進一步填寫,如果行號變動,操作會錯誤甚至異常。不知道有什麼好

論壇發帖機

的處理方法

我覺得有些問題。

後台執行緒對新加入的行做即時處理。

那為何是操作 list view的資料,而沒有資料來源的概念?

明白了,當時為了圖簡便,listview兼具顯示和資料來源的功能了

看來結構要大改

最近也碰到listview佔記憶體不斷變大的情況,我是把240條報警資料放在list中,每1秒重新整理一次,如果listview裡已經有報警a了次數 就+1,如果沒有就新增,也就說每次都重新整理的話list會保持240條不變,實際上listview有的報警也就顯示10條,但是300m的程式記憶體有時 會1600m。

後來經排查是因為用到了委託,button事件裡new了新的窗體,物件還是應該慎用,最好初始化new一次就好,用完要**

對Listview控制項的效率優化

convertview本身具有被重用的性質 static class viewholder 一般來說,我們在getview 裡面需要進行資料的繫結和事件的繫結,那麼我們就需要找到所用的控制項,也就是需要findviewbyid,但是如果在這個方法中,每次都findviewbyid這個方法,因為 fi...

對Listview控制項的效率優化

不管在android平台還是ios平台,listview或者是類似控制項,在資料顯示方面都佔據著相當重要的位置。而作為最重要的資料展示形式,listview控制項或者是類似的需要使用adapter的控制項的載入以及資料展示的效率和優化,就被擺在了乙個很重要的位置,本篇文章主要給大家介紹,如何可以實現...

ListView控制項

listview的資料顯示 listview lv listview findviewbyid r.id.lv 通過游標方式 persondao dao newpersondao this cursor c dao.getpersons 結果集中必須有 id的字段,可以通過別名的方式指定 每乙個條目...