Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Nokia s60 2Ed. Выход в инет 
V
    Опции темы
eugine_s
Дата 3.12.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Всем привет.
Столкнулся с такой проблемой на нокиях (7610, 6260):

Мидлет выходит в инет и загружает некие данные (xml-файл). В процессе обработки этих данных может потребоваться еще запросить из инета данные (если в xml прописан какой-то url - то нужно загрузить и его тоже). 
Суть проблемы: первый запрос выполняется (т.е. xml загружается). Если же нужно выполнить еще дополнительные загрузки данных (url из xml-файла), то мидлет начинает выполнять запрос, НО вот тут и происходит непонятное: JVM не выводит "Разрешить выход в инет?" (в настройках безопасности стоит "спрашивать всегда").
И это сообщение появляется только в том случае, если мидлет свернуть (не обязательно разворачивать сразу, так как иногда даже сразу после сворачивания выводится окно "Разрешить выход в инет?"). После этого мидлет получает из инета нужные данные. 

Загрузкой данных из инета заниманиет отдельный класс в отдельном потоке.

Кто сталкивался, из-за чего такое может происходить?

На других телефонах работает нормально (Nokia s60 3ed, SE).
PM MAIL   Вверх
W0LF
Дата 3.12.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



мож в эту сторону глянуть?
Цитата

HTTP/1.1
Новым в этой версии был режим «постоянного соединения»: TCP-соединение может оставаться открытым после отправки ответа на запрос, что позволяет посылать несколько запросов за одно соединение


Это сообщение отредактировал(а) W0LF - 3.12.2008, 17:24


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
eugine_s
Дата 4.12.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



W0LF, спасибо. Но нет, такое не подходит.

Проблему решил.  smile 

Решение:
Приоритеты потоков: когда первый запрос делался он выполнялся в потоке с нормальным приоритетом, когда же последующие - они выполнялись с MIN_PRIORIRY.


PM MAIL   Вверх
W0LF
Дата 4.12.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



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


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
eugine_s
Дата 5.12.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Попробую объяснить...

Есть класс Manager - содержит загруженную Модель (из xml файла строится модель).
Этих моделей может быть не одна, а несколько, поэтому Manager содержит стек этих моделей.

Когда требуется загрузить новый xml, Manager получает об этом сообщение и инициализирует загрузку данных из инета, т.е. обращается к InetLoader-y и ожидает от него ответа. 

InetLoader стартует новый поток, который загружает данные.

По окончанию загрузки InetLoader информирует Manager о окончании загрузки. Manager полученные данные пересылает XmlParser-y, который из этих данных(из xml) формирует Модель. Manager добавляет в стек новую Модель. Но модель уже сама может обнаружить, что у нее не все данные загружены. В таком случае Модель создает у себя новый поток, который  в том числе обращается к InetLoader(он тоже создаст у себя поток) за нужными данными. И эта схема плохо работала.


Т.е возможно два варианта работы:

1) Manager -> InetLoader
Manager инициализирует загрузку данных и ожидает прихода данных от InetLoader.

2) Manager -> Model -> InetLoader
В этом случае у потока, который создавался в Model был низкий приоритет и с этим была связана проблема.

Но я все равно не понимаю, как может влиять сворачивание мидлета на приоритеты.

P.S. наверное намного понятнее будет если сказать, что xml - это на самом деле html-страница (не совсем html, но суть где-то такая же). Из этой xml-ки формируется Модель (текст, ссылки и т.д.). А дополнительные ссылки - это картинки.

Добавлено через 1 минуту и 11 секунд
P.P.S. Перечитал еще раз - плохо объяснил. Но лучше без кода наверное не смогу объяснить. А код выложить не могу.
PM MAIL   Вверх
W0LF
Дата 5.12.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



 ога , я тож что-то перечитал и ниасоба понил smile


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.