Рейтинг@Mail.ru
загрузкаидет загрузка

Очередная ошибка: Potential deadlock

На ошибке Project is broken препятствия не закончились Следующий баг, стоящий на пути оживления утилиты, связан с Windows 7, а именно на ней не работает сановский J2ME SDK 3.0, вываливая: "Прекращена работа программы runMidlet".

Эх, а мне в 3.0 нравился эмулятор сенсорного девайса.

Окей, качаем старый WTK 2.5.2, компилируем и Oh My God!

Блин, почему отлично работающий код, после того как не трогать его некоторое время перестает компилироваться? :)

Цитата:
Warning: To avoid potential deadlock, operations that may block, such as networking, should be performed in a different thread than the commandAction() handler.

В переводе на русский: Чтобы избежать возможных зависаний (deadlock), операции которые могут привести к блокировке, такие как использование сети, должны исполняться в другом потоке, а не в обработчике commandAction().

В общем логично конечно, желательно чтобы пока информация будет подсасывать из интернета, приложение не висело в ожидании. Спасибо за науку так сказать. Но SDK 3.0 как-то менее придирчив что ли в этом плане, ну не вывел ты загрузку в отдельный поток, ну и не надо. Тебе же хуже потом будет, но приложение дай запустить, елки-палки :)


new Thread(new Runnable(){
public void run() {
try{
//код, работающий с сетью
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
Комментарии:
  • 10.01.2010 - 17:58 / Firefoxx
  • Без нового потока нереально обойтись, пользователь будет остервенело тыкаться по кнопкам и думать что приложение висит.Полюбому для сети нужна новая нить, пока оно запрашивает данные можно отрисовывать прогресс-бар какой-нить

  • Wolverine
  • 10.01.2010 - 18:22 / Wolverine
  • Я полностью согласен, это хорошо, что IDE подсказывает как можно улучшить код программы. Если одно HTTP соединение, принимающее 1-2кб это еще нормально, а больше - уже реально видна задержка.


Ooooops

Looks like Twitter's feed isn't working at the moment.