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