2014-02-11 6 views
2

Я работаю над Android-приложением с 3 мероприятиями. Они ведут себя как три разных вкладки, поэтому при обычном использовании пользователь, скорее всего, переключится между собой одним быстрым способом. Чтобы сделать это, я всегда использовал следующий код:Производительность Android при переключении Активность

Intent intent= new Intent(currentclass.this, nextclass.class); 
startActivity(intent); 

Однако, по крайней мере, два из деятельности могут показать огромный список кнопок просмотрены в Scrollview View. Под «огромным» я подразумеваю 500 элементов или около того. Таким образом, как вы можете себе представить, требуется слишком много времени для перехода от одного действия к другому. Создание нового действия каждый раз, вместо восстановления старого, в основном является проблемой. Действительно, немного быстрее переключиться с какой-либо Activity на предыдущую загруженную активность (которая по умолчанию является функцией backButton по умолчанию), чем для этого по вышеуказанному коду. Я хотел бы знать, почему именно это и как извлечь выгоду из него (используя некоторые флаги на объекте Intent).

Так же, как и backButton не удовлетворяет производительности, которую я ищу, я также хотел бы услышать о любом предположении, которое может улучшить мою реализацию переключения.

Спасибо!

+0

вы можете реализовать держатели для просмотра, чтобы повысить производительность загрузки списков из [здесь] (http://www.javacodegeeks.com/2013/09/android-viewholder-pattern-example.html) – SMR

+0

startActivity (намерение) вызывает oncreate каждый раз, но обратная кнопка просто разрушает открытую активность, а старая будет такой, какой она есть, ее oncreate не будет называться так быстро –

ответ

0

У вас есть несколько вариантов повышения производительности здесь.

Модель держателя вида, упомянутая SMR, является отличной для начала. Также убедитесь, что вы конвертируете представления вместо того, чтобы заставить android управлять 500 фактическими представлениями, так как это заставит ваш пользовательский интерфейс занять много времени, чтобы построить.

Вы также можете использовать Loader для загрузки данных в фоновом режиме, чтобы исходный пользовательский интерфейс появился, и список обновлен, так как загрузчик заполняет данные. Отображает ли ваш список на самом деле 500 кнопок на экране или всего 500 элементов, и в этом случае вам не нужно ждать, пока все они загрузятся, чтобы заполнить экран?

Вы можете переключиться на использование Fragments вместо Деяний, чтобы вы не воссоздавали действия при каждом переключении вкладок. Android имеет тенденцию удерживать фрагменты более агрессивно, так как он знает, что вы можете переключиться на них быстрее в одном действии.

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

1

Вы говорите, что используете прокрутку.

Простым ответом является использование списка вместо этого. Он имеет оптимизацию производительности, специально предназначенную для обработки большого количества элементов.

Смежные вопросы