2013-08-19 74 views
1

我將20個項目(WebViews)加載到LinearLayout中,並且在加載時我顯示一個ProgressBar,它隱藏了LinearLayout以向我正在工作的用戶提供反饋。Android ProgressBar跳過框架

問題是進度盤凍結,我在編輯器的LogCat中發出警告,說「跳過的幀!應用程序可能在其主線程上做了太多工作。」

爲了避免這個問題,我實際上試圖改變使用一個LinearLayout與所有20個項目和一個適配器使用ListView。我遇到了WebView回收問題,所以我消除了回收並實際使用了20個項目的數組,每次ListView需要加載項目時,它都會從該數組中加載,如果它之前已經膨脹。

然後我陷入了無法滾動到指定項目的問題,因爲ListView僅在必要時加載WebViews,因此無法計算需要完成的滾動量,因爲WebViews的高度變化。

結論,我不得不回到我的LinearLayout實現,將所有WebView添加到它。

有沒有解決這個問題的方法? 如果沒有,我正在考慮只顯示一個「正在加載...」TextView,而不是一個動畫ProgressBar。

順便說一句,有人問之前,我使用Nexus 4來測試應用程序,而不是模擬器,我沒有在UI線程中進行數據庫訪問。

在此先感謝。

回答

1

A WebView是一個沉重而昂貴的物體,每當您將新的WebView添加到窗口時,它都必須進行初始化,測量和佈局。這是什麼導致你跳過幀。您可以使用traceview或systrace來查看您花費的時間。

+0

我從來沒有使用這些工具,我必須今天完成應用程序,但我會學習如何使用它們,看看是否有辦法改進應用程序。謝謝。 –