в моем классе у меня есть встроенный поток в конструкторе, который загружает объекты с удаленного сайта:
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.
Надеюсь, вы, ребята, сможете объяснить, как ждать эту ветку. Я посмотрел в синхронизированном, но не мог найти хорошее решение.