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