Мне интересно, есть ли способ вернуть объект из работающего потока. В моем андроида проекте (не важно для вопроса) У меня есть этот метод:Обратный объект из темы
public void getFolders()
{
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
List<File> result = new ArrayList<File>();
Files.List request = null;
do
{
try
{
request = service.files().list();
request.setQ("'appdata' in parents");
FileList files = request.execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
}
catch (IOException e)
{
System.out.println("An error occurred: " + e);
request.setPageToken(null);
}
}
while (request.getPageToken() != null && request.getPageToken().length() > 0);
}
});
t.start();
}
Этот метод захватывает некоторые данные из Интернета и сохранить результат в List<File> result
. Вот почему я не хочу запускать его в потоке пользовательского интерфейса. Теперь я хочу вернуть этот список в мой основной метод. Каков наилучший способ сделать это?
Вы пробовали 'интерфейс Callable' ?? – prasanth
Может быть дублирован здесь http://stackoverflow.com/questions/9148899/returning-value-from-thread или здесь http://stackoverflow.com/questions/3141158/how-can-a-thread-return-a- value-after-finish-its-job – fujy
Объявление 'List' как переменной экземпляра класса является одним из способов получить данные из списка –