Аналог паскалевского Delay без введения потока.
Можно ли как-нибудь сделать задержку при выполнении программы без введения потока?
|
Ответ: Аналог паскалевского Delay без введения потока.
Thread.currentThread().sleep(1000);
|
Ответ: Аналог паскалевского Delay без введения потока.
sleep(int millis) - это статический метод класса Thread, поэтому можно обращаться просто как Thread.sleep(1000); И InterruptedException ловить не забываем.
|
Ответ: Аналог паскалевского Delay без введения потока.
Два с половиной года, блеать, я ждал ответа на этот вопрос. Спасибо вам, парни, теперь я могу спокойно спать по ночам. :super:
|
Ответ: Аналог паскалевского Delay без введения потока.
Всем привет! Накопилась парочка вопросов.
Цитата:
Вопрос №2: допустимо ли, ожидая событие (например, нажатие кнопки), периодически опрашивать состояние события (переменной, которую устанавливает метод lcdui.Canvas.keyPressed в отдельном потоке) с последующим засыпанием на 1 мс по Thread.sleep(1)? Т.е. не будет ли такой код создавать излишнюю нагрузку на телефон? (ну может лучше до 10 мс увеличить время ожидания, например): Код:
while(!keyPressed) { |
Ответ: Аналог паскалевского Delay без введения потока.
Я пишу метод, чтобы не писать по нескольку раз 4 строчки.
PHP код:
Время реакции человека порядка 100мсек. (А иначе в спорте засчитывают фальшстарт) Экран обновляется порядка 20-40 мсек, т.е, обновляться бегать в цикло сильно чаще смысла нет. 10-20 мсек точно хватит, меньше нет смысла делать. P.S. Насколько delay(1) хуже для батареи телефона - не понятно. Наверно, разницы практически нет. |
Ответ: Аналог паскалевского Delay без введения потока.
Canvas.keyPressed - это системная функция, она и так в отдельном потоке обрабатывается. Внутрь этой функции не нужно помещать логику программы, здесь нужно запомнить нажатую кнопку, и логику нажатия обрабатывать в твоем главном цикле.
|
Ответ: Аналог паскалевского Delay без введения потока.
Цитата:
Следовательно никак нельзя быть уверенным что delay будет создавать именно указанную задержку, особенно если она мала. Разница между delay(1) и delay(100) только в том насколько много процессов успеют выполнится в этот промежуток времени. |
Ответ: Аналог паскалевского Delay без введения потока.
Кстати, есть ещё Thread.yield()
Но не знаю насколько есть смысл в этом методе именно на Java ME. Жека, я не помещаю логику программы внутрь Canvas.keyPressed. Моя keyPressed это переменная, которая устанавливается внутри Canvas.keyPressed. Если код кажется слегка не таким как вы привыкли, то это потому что я его на Java переписал чтобы вам было лучше понятно. |
Ответ: Аналог паскалевского Delay без введения потока.
Цитата:
у меня в проге была проблема - метод keyPressed() прерывал выполнение paint(). Цитата:
Код:
Invocation of method yield() on java.lang.Thread is usually used to masquerade synchronization problems and should be avoided. как оно на самом деле, и тем более в джава-машинах разных телефонов - не ясно. |
Часовой пояс GMT +4, время: 10:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot