各位大佬,最近用戶反饋程序的圖像加載慢,而且影響了數(shù)據(jù)顯示。具體情況是這樣的:界面上一個(gè)重寫的Listview用來顯示用戶信息,然后下邊有一個(gè)自定義的控件原來加載當(dāng)前選中行用戶的圖像,用selectedindexchanged事件綁定的,后來發(fā)現(xiàn)圖像過多時(shí)加載速度就變慢,這是因?yàn)椴樵償?shù)據(jù)庫導(dǎo)致的,和圖像加載本身無關(guān)。但是切換選中行時(shí),從點(diǎn)擊切換到切換結(jié)束的幾秒中,listview的切換的這兩行被清空了,重繪的數(shù)據(jù)文字和選中背景色都消失了,下面的Image控件圖像加載完畢之后才恢復(fù)正常,感覺好像重繪的過程被暫停了,影響用戶體驗(yàn)。同樣的控件,用戶圖像數(shù)據(jù)少,查詢速度比較快的時(shí)候切換行重繪救很快,肉眼不可見,這和selectedindexchanged事件的機(jī)制有關(guān)嗎?將selectedindexchanged事件里面的數(shù)據(jù)查詢和加載圖像單獨(dú)創(chuàng)建線程處理,也沒什么效果。用戶圖像是存在本地的,不用下載緩存,我進(jìn)行了嘗試,發(fā)現(xiàn)耗費(fèi)的時(shí)間主要是在查詢當(dāng)前選中用戶的圖像路徑上,這塊暫時(shí)不準(zhǔn)備進(jìn)行修改,數(shù)據(jù)多了,當(dāng)然耗費(fèi)時(shí)間。其實(shí)真正加載圖像并不耗時(shí)?,F(xiàn)在主要的問題是,觸發(fā)selectedindexchanged事件,這個(gè)時(shí)候,Listview會(huì)進(jìn)行重繪,大概流程是:清空之前選中行的選中背景色,將其繪制成未選中的,把將要選中的行背景色改為選中行背景色。當(dāng)我查詢數(shù)據(jù)多,耗時(shí)的時(shí)候,感覺這個(gè)流程卡住了一樣,之前選中的行背景色和數(shù)據(jù)都清空了,后面將要選中的行數(shù)據(jù)清空了,顏色也沒繪制。直到我查詢完畢。給人的感覺就是: selectedindexchanged事件觸發(fā)-->之前選中行背景色清空;數(shù)據(jù)查詢及圖像加載-->界面重繪暫停(若干秒,兩行的背景色和數(shù)據(jù)都清空了,影響用戶體驗(yàn),就是這個(gè)問題);selectedindexchanged事件結(jié)束-->重繪,然后完成。我不太清楚為什么selectedindexchanged事件會(huì)和Listview的重繪關(guān)聯(lián)了,我試圖將數(shù)據(jù)查詢及圖像加載這一塊用線程單獨(dú)執(zhí)行,然并卵。
關(guān)于Listview控件的selectedindexchanged事件
肥皂起泡泡
2018-08-15 10:09:18