2015-03-12 7 views
0

Хо, я хочу, чтобы моя функция дождалась выполнения этой задачи async перед возвратом переменной?Java Async ждет окончания

public boolean CheckOnline(){ 
    OnlineAsyncTask onlinetsk = new OnlineAsyncTask(); 
    onlinetsk.execute(); 
    return Online; 
} 
+1

Тогда это должно быть не асинхронной. Выполните его в обычном потоке и вызовите 'join()' на объект потока, чтобы подождать, пока он не закончится. Убедитесь, что вы не блокируете UI-поток. –

ответ

2

Вы можете позвонить get() ждать асинхронной задачи для завершения и получения результата.

Однако это побеждает цель асинхронной задачи - она ​​больше не является асинхронной. Подумайте о перепроектировании своего приложения, чтобы не ждать результата. Вместо этого, например, используйте интерфейс обратного вызова, чтобы уведомить о завершении задачи асинхронизации и получить результат.

0
String str_result= new OnlineAsyncTask().execute().get(); 

Это позволит сделать его ждать, пока она возвращает значение

+0

Будет ли это также запускаться на основной поток, а не на отдельный поток? – apmartin1991

+0

@ apmartin1991 будет работать на главной теме – Fahim

Смежные вопросы