我正在将 20 个项目(WebViews)加载到 LinearLayout 中,当它们加载时,我正在显示一个 ProgressBar,它隐藏了 LinearLayout 以向用户提供我正在工作的反馈。
问题是进度轮冻结,并且我在 Choreographer 的 LogCat 中收到警告说“跳过帧!应用程序可能在其主线程上做了太多工作。”
为了避免这个问题,我实际上尝试从使用带有所有 20 个项目的 LinearLayout 和使用带有 Adapter 的 ListView 进行更改。我遇到了 WebView 回收问题,所以我消除了回收并实际使用了一个包含 20 个项目的数组,每次 ListView 需要加载一个项目时,如果它之前已经膨胀,它就会从该数组加载。
然后我遇到了无法滚动到指定项目的问题,因为 ListView 仅在必要时加载 WebView,因此由于 WebView 的高度不同,它无法计算需要完成的滚动量。
结论,我必须回到我的 LinearLayout 实现,将所有 WebView 添加到它。
这个问题有解决方案吗?如果没有,我正在考虑只显示“正在加载...”TextView 而不是动画进度条。
顺便说一句,在有人问之前,我正在使用 Nexus 4 来测试应用程序而不是模拟器,并且我没有在 UI 线程中进行数据库访问。
提前致谢。