Вопрос

Быстрый вопрос ... Используя 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top