Использование потоков в мидлете: как прослушать запущенный поток? - PullRequest
0 голосов
/ 09 февраля 2010

в моем классе у меня есть встроенный поток в конструкторе, который загружает объекты с удаленного сайта:

Thread readSite = new Thread(new Runnable() {       
    public void run() { 
        site.loadStuff();
    } 
});
readSite.start();

Я хочу отображать сообщение «загрузка», пока поток не закончится. Так что перед приведенным выше кодом я показываю сообщение о загрузке.

После приведенного выше кода я показываю экран, на котором я хотел бы продолжить.

Код выглядит так:

showLoadingView(); //tells the user it is waiting

Thread readSite = new Thread(new Runnable() {       
    public void run() { 
        site.loadStuff();
    } 
});
readSite.start();

showStuffView(); //works with the data retrieved from the site instance

Теперь основной поток, конечно, продолжается, и showStuffView () выполняется напрямую.

Теперь я могу позволить основному потоку дождаться потока readSite , но затем пользователь не может принять запрос на подключение («можно ли использовать эфирное время?»), Который отображается пользователю (потому что Ответственный поток спит, я думаю).

С другой стороны, я не могу выполнить showStuffView () с readSite Thread.

Надеюсь, вы, ребята, сможете объяснить, как ждать эту ветку. Я посмотрел в синхронизированном, но не мог найти хорошее решение.

1 Ответ

0 голосов
/ 09 февраля 2010

Я думаю, что это общая проблема с потоками, и эту конкретную проблему вы можете решить с помощью логической переменной. но для общего назначения я думаю образец наблюдателя это хорошо.

...