Как сделать, чтобы модификация принимала обратный вызов прогресса загрузки для каждого запроса? - PullRequest
1 голос
/ 05 марта 2020

Справочная информация:
Я пытаюсь перенести мой старый загружаемый код с обратным вызовом процесса из AsyncTask и HttpUrlConnection в Android на использование модернизации. Тем не менее, я заметил, что retrofit / okhttp не обеспечивает такой обратный вызов по умолчанию.
Я много занимался поиском и нашел какой-то подход, в том числе официальное решение от okhttp, которое выполняется перехватчиками и пользовательский ResponseBody. Тем не менее, ни один из них на самом деле не отвечает моим потребностям.
Что я хочу:
Проблема этого кода в том, что обратный вызов на самом деле подключен к перехватчику, что делает его подключенным к клиенту okhttp в то время как мне нужно применить различные объекты обратного вызова для каждого запроса. (различное android изменение элемента пользовательского интерфейса и т. д. c.)
Что я имею пробовал:
Для того, что я понимаю, один запрос помечается одним экземпляром модифицированного интерфейса вызова, поэтому, если я хочу реализовать обратный вызов для каждого запроса, он должен быть присоединен к экземпляру вызова или RequestBody instance.
К сожалению, я не нашел способа получить экземпляр модификации Call внутри перехватчика ohttp. Я также не могу прикрепить к нему пользовательский объект обратного вызова.
Что касается пользовательского подхода RequestBody, он кажется выполнимым. Но если речь идет о GET-запросе, он снова недоступен, поскольку с помощью дооснащения нельзя установить RequestBody.
Есть ли какой-нибудь элегантный способ добиться этого? И под «элегантным» я подразумеваю, что предпочитаю не поддерживать запрос -> сопоставление обратного вызова самостоятельно в любой форме, которая может даже вызвать утечку памяти, если не с большой осторожностью.

1 Ответ

0 голосов
/ 06 марта 2020

Вы можете найти что-то с помощью @Tag и / или Invocation. Tag позволяет вам определить параметр в вашем запросе на модификацию, который будет доступен в перехватчиках. Invocation похож, но для него не нужен дополнительный параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...