2012-06-10 1 views
1

У меня есть серия сложных представлений, отображаемых на экране, и мне также требуется динамически переключаться между представлениями во время выполнения, которое я делаю, удаляя представления и добавляя новые виды (когда-то только установив ОТОБРАЖЕНИЕ).Просмотр очень медленно отображается на эмуляторе и устройстве

Теперь проблема заключается в том, что виды занимают чрезвычайно большое количество времени (более 7-8 секунд).

Я поставил метки времени в своих методах, и все они, кажется, вернулись довольно быстро. Но даже после того, как последний из моих методов вернется, представление не отображается, и я должен ждать, чтобы увидеть его на самом деле. После этого пользовательский интерфейс довольно не отвечает, и я довольно часто получаю ANR.

Может кто-нибудь указать, почему это так вяло?

Я загружаю много изображений из файловой системы во время выполнения, используя Drawable.createFromPath(). Это может быть проблема?

ответ

1

я обнаружил решение для того же, и я отправляю это для тех, кто сталкивается с подобными проблемами. Проблема была связана с глубоким вложением взглядов. Поскольку макет был довольно сложным, взгляды были достаточно глубокими. И после определенного уровня 14-15 производительность резко ухудшается. При слиянии некоторых макетов макета (держатели места и т. Д.) Производительность была значительно улучшена. Средство просмотра иерархии было очень полезно при отладке этой проблемы. Еще несколько наблюдений были следующими: 1. Относительные макеты при вложенности довольно медленные, в то время как LinearLayouts - это не так много. 2. Мягкая клавиатура вяленая при использовании в диалоговом окне или при запуске формирует глубоко вложенную относительную компоновку (Иерархия состоит из относительных макетов в основном.)

0

Одна из причин, по которым приложение становится вялым, - это когда вы занимаете много времени, не относящееся к пользовательскому интерфейсу в потоке пользовательского интерфейса. Я бы посоветовал вам внимательно изучить ваш код и определить, для какой активности требуется время, и вы можете использовать AsyncTask для выполнения этих действий.

Обратитесь к этой ссылке для получения дополнительной информации: http://developer.android.com/reference/android/os/AsyncTask.html

+0

Нет другой активности, не связанной с ui. Фактически, я удалил все и просто попытался раздуть макеты. Сама компоновка занимает огромное количество времени. – user1027742

+0

Я нашел решение для того же самого и отправляю его для тех, кто сталкивается с подобными проблемами. Проблема была связана с глубоким вложением взглядов. Поскольку макет был довольно сложным, взгляды были достаточно глубокими. И после определенного уровня 14-15 производительность резко ухудшается. При слиянии некоторых макетов макета (держатели места и т. Д.) Производительность была значительно улучшена. Средство просмотра иерархии было очень полезно при отладке этой проблемы. – user1027742

+0

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