![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Кто-нибудь встречал со следующей "фичей" (багом?) на Nokia S60 3rd Ed: Время от времени приложение должно лезть в интернет. При первой попытке соединения с интернетом телефон предлагает сделать выбор точки доступа. Но по какой-то причини бывает, что окно с выбором точки доступа появляется только через очень длительное время (например 50-100 и более секунд), хотя явных причин для этого нет, так как когда нужно подключиться к интернету создается новый поток и в новом потоке уже идет общение с интернетом. Вот код:
Процесс появление окна выбора точки доступа можно "ускорить" - нажав, например, главное меню. В таком случае окно появляется сразу. Такое чувство, что когда вызываю создание нового потока - его что-то задерживает. Кто-то сталкивался? |
|||
|
||||
ivanovpv |
|
||||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 10 Всего: 28 |
Скорее всего это связано с непреемптивностью телефонной ОС или же тем, что ваш поток где производится соединение не дает дышать потоку ОС, который должен вызвать диалоговое окно выбора точки доступа. На эмуляторе видимо все работает - поскольку эмулятор пользуется преемптивностью ОС компа, а на реальном телефоне проблема, так?
Рецепта два: 1) Вызывать
где-нибудь в теле вашего потока. IMHO в вашем случае это не поможет, поскольку в коннекте у вас нет явного цикла - куда бы воткнуть sleep() 2) Понизить приоритет вашего потока:
-------------------- Aut viam inveniam aut faciam |
||||
|
|||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
ivanovpv, спасибо.
Я собственно, так и думал, что проблема связана с потоками и их приоритетами. Но ввиду специфики моего мидлета я ничего не могу изменить. Мой мидлет использует только один поток (и еще один, когда нужно подключиться к инету - вызывается метод start из кода в первом посте). Основной поток постоянно засыпает:
Поэтому проблема не в моих потоках, а других потоках, о которых я ничего не знаю. Специфика приложения такая, что я в приложение еще может быть несколько потоков, о которых я ничего не знаю и ничего не могу сделать с ними (т.е не могу их усыпить и не могу изменить им приоритет). Тему можно считать закрытой. Если у кого-то возникнут похожие проблемы, то (как написал ivanovpv) решения два (я бы рекомендовал их оба применять): 1) Основной поток усыплять на какое-то время, чтобы остальные потоки могли "вздохнуть". Например, Thread.sleep(100). 2) "Поиграйте" с приоритетами потоков. Только, наверное, правильнее у нужного потока повышать приоритет, а у других понижать. |
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 10 Всего: 28 |
Ну а почему бы не понизить приоритет вашего потока? Зачем ему сразу давать максимальный приоритет. Из-за этого потоки оси телефона не могут вздохнуть (мне так каатса...) -------------------- Aut viam inveniam aut faciam |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Потому что: 1) Про остальные потоки я ничего не знаю и когда они отработаю я не знаю. Мой поток, в свою очередь, должен фактически получить полный контроль, а не ждать кого-то. 2) Уже пробовал - было еще хуже. |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |