Обеспечивает ли это успешное завершение операции?
Нет, использование async()
или нет не влияет на шансы на успех; что меняется в том случае, если возникает ошибка:
- С
.async()
будущее закончится sh с ошибкой (.hasError()
, .getErrorMessage()
...) - С вызовом syn c вызов вызовет исключение (так что вы можете обернуть его с помощью try / catch)
Будет ли он также блокировать текущий поток или что мы должны знать о вызовах syn c ()?
Да, вызов syn c блокирует текущий поток до тех пор, пока действие не будет завершено (успешно, отменено или завершится неудачно), что означает, что вам следует никогда не делайте этого в основном потоке android (поток пользовательского интерфейса), иначе вы получите исключение NetworkOnUIThread
.
Обратите внимание, что не все вызовы fini sh сами по себе; например, chat.run()
на объекте Chat
будет работать «вечно», то есть до тех пор, пока он не будет отменен или не возникнет ошибка. Это еще один случай, когда .sync()
полезно, потому что вы получите будущее, которое вы можете отменить, чтобы остановить чат.