Android ProgressBar跳帧

时间:2013-08-19 17:24:07

标签: android performance webview

我正在将二十个项目(WebViews)加载到LinearLayout中,当它们正在加载时,我正在显示一个ProgressBar,它隐藏了LinearLayout以向用户提供我正在工作的反馈。

问题是进度轮冻结了,我在Chocographer的LogCat中收到警告说“跳过帧!应用程序可能在其主线程上做了太多工作。”

为了避免这个问题,我实际上试图改变使用所有20个项目的LinearLayout并使用带适配器的ListView。我遇到了WebView回收问题,因此我取消了回收并实际使用了20个项目的数组,每次ListView需要加载项目时,如果之前已经充气,它将从该数组加载。

然后我遇到了无法滚动到指定项目的问题,因为ListView仅在必要时加载WebView,因此无法计算需要完成的滚动量,因为WebView的高度不同

结论,我必须回到我的LinearLayout实现,将所有WebView添加到它。

这个问题有解决方法吗? 如果没有,我正在考虑只显示“正在加载...”TextView而不是动画ProgressBar。

顺便说一下,在有人要求之前,我正在使用Nexus 4来测试应用程序,而不是模拟器,而且我没有在UI线程中进行数据库访问。

提前致谢。

1 个答案:

答案 0 :(得分:1)

WebView是一个沉重且昂贵的对象,每次向窗口添加新的WebView时,都必须对其进行初始化,测量和布局。这就是导致你跳过帧的原因。您可以使用traceview或systrace进行检查,看看您花时间在哪里。