Итак, согласно комментарию Ричарда Сзалая :
Лучше всего выполнить запрос в фоновом потоке и просто отписаться от событий объекта-контейнера, когда пользователь нажмет кнопку Отмена.
И я думаю, что согласен с тем, что сейчас это хороший обходной путь. Я хотел бы видеть некоторые функции асинхронных запросов, уже находящиеся в фреймворке, но пока это не произойдет, это должно будет сделать.
Еще не начали реализовывать это (сначала нужно закончить некоторые другие вещи), но одним способом это могло бы работать:
- В рабочем потоке выполняйте запросы в отдельном потоке запросов, а затем присоединяйтесь к этому потоку, пока он не закончится.
- Когда пользователь нажимает кнопку отмены, вызовите метод
Interrupt
рабочего потока, который затем получит ThreadInterruptedException
и прекратит ждать завершения потока запроса.
Может добавить код позже, когда я его сделаю. Но посмотрим как получится красиво: p