Заставить Мидлет J2ME спать без ниток?
-
06-07-2019 - |
Вопрос
Быстрый вопрос ... Используя J2ME (CLDC 1.1, MIDP-2.1), можно ли перевести Мидлет на некоторое время (без использования потоков) ... Например:
public class myMidlet extends MIDlet{
public void startApp() {
/* Sleep for 10 seconds */
/* The answer was: */
try {
Thread.sleep(time_ms);
} catch (Exception e) {}
}
...
Я не очень много использую Java и не хочу программировать потоки просто для сна.
Заранее спасибо
Резюме ответов
Мое отсутствие знаний Java. Примеры, которые я видел с помощью Thread.sleep (), привели меня к мысли, что его можно использовать только в объекте потока, созданном Мидлетом, а не в самом мидлете. Я не хотел разбивать логику мидлета на поток, чтобы усыпить его ... Но теперь я знаю, что мидлет работает в потоке по умолчанию :) Собираюсь найти книгу по Java, которую я никогда не читал, потому что не думаю, что я буду использовать язык когда-либо
Решение
Я не понял, имеете ли вы в виду перевод мидлета в состояние паузы или просто остановку выполнения на указанное время.
Если это последнее, на самом деле я не понимаю, почему вы не хотите использовать потоки, это не страшно. Вы просто вставляете три следующие строки, где вам нужно:
try {
Thread.sleep(10000);
} catch (Exception ex) {}
Вот и все, ничего сложного.
Другие советы
Я не знаю точного ответа, но я также не понимаю, в чем заключается проблема с вызовом статического метода Thread.sleep (миллисекунды), который " приводит к тому, что текущий выполняющийся поток переходит в спящий режим (временно прекращает выполнение) для указанного количество миллисекунд " , Вы называете это потоками программирования?
Я бы выбрал подход Малкольма, поскольку ваш поток может вызвать исключение.
[...] и не хочу программировать темы просто [...]
Ну, вам будет сложно программировать J2ME и пытаться избежать многопоточного программирования. Если ваше приложение становится немного сложнее, особенно при использовании сетевых подключений, вам придется использовать потоки. Более того, если какая-либо операция занимает более 2-3 секунд, настоятельно рекомендуется запустить ее в отдельном потоке, возможно (одновременно), уведомив пользователя о текущей работе.
Кстати, что я забыл. Я недавно написал приложение J2ME для университетского курса. Там я построил то, что я назвал «ExecutableTask» что позволило мне обрабатывать темы удобным и простым способом. Если вы хотите посмотреть на источник ... К сожалению, вы не можете просматривать его в Интернете в репозитории Google из-за к какой-то ошибке в решении хостинга Google (мое имя так называется).
Вы можете попробовать использовать Object.wait ()
, Object.wait (long timeoutValue)
. Хотя я бы не советовал вам откладывать основной поток startApp () / system.