2013-08-19 3 views
1

Я загружаю двадцать элементов (WebViews) в LinearLayout, и пока они загружаются, я показываю ProgressBar, который скрывает LinearLayout, чтобы обеспечить обратную связь с пользователем, что я делаю работу.Android ProgressBar пропускает фреймы

Проблема заключается в том, что колесо прогресса замерзает, и я получаю предупреждение в LogCat от хореографа, говорящего «Пропущенные рамки! Приложение может делать слишком много работы над своей основной нитью».

Чтобы избежать этой проблемы, я фактически попытался перейти от использования LinearLayout со всеми 20 элементами и с помощью ListView с адаптером. Я столкнулся с проблемами переустановки WebView, поэтому я исключил возможность утилизации и фактически использовал массив из 20 элементов, и каждый раз, когда ListView должен загружать элемент, он загружается из этого массива, если он уже был накачан раньше.

Затем я попал в проблему, что не могу прокрутить указанный элемент, потому что ListView загружает WebView только тогда, когда это необходимо, поэтому он не может рассчитать количество прокрутки, которое необходимо выполнить, так как высоты WebViews варьироваться.

Заключение Мне пришлось вернуться к моей реализации LinearLayout, добавив к ней все WebView.

Есть ли решение этой проблемы? Если этого не произошло, я думаю о том, чтобы показывать только «Загрузка ...» TextView вместо анимированного ProgressBar.

Кстати, прежде чем кто-то спросит, я использую Nexus 4 для тестирования приложения, а не эмулятора, и я не делаю доступа к базе данных в потоке пользовательского интерфейса.

Заранее спасибо.

ответ

1

A WebView - это тяжелый и дорогой объект, каждый раз, когда вы добавляете в окно новый WebView, его необходимо инициализировать, измерить и выложить. Это то, что заставляет вас пропускать кадры. Вы можете проверить с помощью traceview или systrace, чтобы узнать, где вы проводите время.

+0

Я никогда не использовал эти инструменты, и сегодня я должен закончить приложение, но я узнаю, как их использовать позже, и посмотрите, есть ли способ немного улучшить приложение. Благодарю. –