2013-03-09 6 views
1

Я работаю с огромным файлом xml (1,3 мб) с сервера, для загрузки с сервера требуется около 25 секунд.Lazy load view from xml

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

Я могу загрузить файл xml и сохранить его во внутренней памяти и проанализировать его с помощью анализатора SAX.

Также можно загрузить xml в кусках и проанализировать их, когда я продолжаю?

разработать мою проблему,

1. мне нужно загрузить и проанализировать файл XML с сервера. Файл составляет около 1.3 МБ.

2. Загрузка займет около 30 секунд и 4 секунды для разбора.

3. Я храню его в локальном файле и анализирую его с помощью анализатора SAX.

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

Как я могу работать с частью чертежа, когда файл xml загружается и анализируется на куске загруженного файла, чтобы минимизировать задержку и анализировать меньшие сегменты с сервера?

+0

Вы можете разбить файл на Serveral частей, каждая часть содержит описание нарисовать область, то вы идете. – toantran

+0

можете ли вы опубликовать некоторый код о том, как это сделать. –

+0

Это просто идея реализовать на сервере, например, у вас есть 1,3 МБ, и вам понадобится 30 секунд для загрузки, теперь вы разделите его на 3 файла с 0,4 МБ и 1 файл с 0,1 МБ (сделайте общее = 1,3 МБ). Каждый из этих файлов содержит описание, достаточное для того, чтобы вы могли нарисовать часть своего вида. У вас есть отдельная нить, чтобы сделать сетевую связь, и основной поток (поток пользовательского интерфейса), чтобы нарисовать то, что вы получаете от сетевой нити. Это просто идея :) – toantran

ответ

0

Я не уверен, какой вид/данные вы говорите (MapView?), Но вы должны показать что-то во время операции загрузки и разбора.

Android design guide предлагает показать центрированный ProgressBar, который они называют «кругом деятельности». По завершении операции скройте индикатор выполнения и покажите свое представление (используйте FrameLayout для перекрытия «ожидающих» и «готовых» представлений, чтобы вы могли легко переключаться между ними, изменяя видимость).

В этом примере активность круг (в Holo Light) используется в приложении Gmail, когда сообщение загружается, потому что это не можно определить, сколько времени потребуется, чтобы загрузить электронную почту.

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

activity circle

+0

Это не то, что я хочу точно. Я показываю этот диалог прогресса, это просто, что я хочу оптимизировать загрузку этого огромного файла xml. –

+0

@AashishBhatnagar Ах, в этом случае вам нужно кормить поток, который вы получить от загрузки непосредственно в SAX-синтаксический анализатор, чтобы вы могли анализировать по мере поступления данных. – user113215

+0

попробовал, что все еще занимает 18 секунд. Я даже попробовал stax, но не использовал. Думаю, мы никогда не сможем достичь xml performace, как в случае actionscript –