Как вернуть объект с помощью Retrofit 2 - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь собрать клиент Rest с Retrofit 2. Это первый раз, когда я использую эту библиотеку.

Большинство примеров, которые я видел, обычно используют функцию обратного вызова в активности или представлении Android.

http://www.vogella.com/tutorials/Retrofit/article.html

https://github.com/MeetMe/TwitchTvClient/tree/master/src/com/wdonahue/twitchtvclient

Мне было интересно, можно ли в приведенном ниже коде вернуть объект типа Appver вместо void?

Спасибо!

public void GetAppver()
{
    Call<Appver> call = endPoint.GetAppver();

    call.enqueue(new Callback<Appver>()
    {
        @Override
        public void onResponse(Call<Appver> call, Response<Appver> response)
        {
            if (response.isSuccessful())
            {
                Appver appver = response.body();
            }
        }

        @Override
        public void onFailure(Call<Appver> call, Throwable t) { }
    });
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вы можете вызывать методы сервиса Retrofit синхронно.

public AppVer GetAppVer() {
    Call<AppVer> call = endPoint.GetAppver();
    Response<AppVer> response;

    try {
        response = call.execute();
    } catch (IOException e) {
        // Handle network communication errors here
    }

    if (!response.isSuccessful()) {
        // Handle REST service errors here
    }

    return response.body();
}

Однако, как вы знаете, вы не можете осуществлять сетевое взаимодействие в главном потоке в Android.Вы должны обернуть вызов, например, в Thread, AsyncTask или Service.

Посмотрите следующие ссылки, как структурировать ваше приложение.

0 голосов
/ 29 мая 2018

Полагаю, вы хотите иметь Appver, потому что вам нужно использовать этот объект, чтобы, возможно, вылить пользовательский интерфейс, например, внутри RecyclerView , в этом случае, я думаю, вы не можете избежать использования void, потому чтоВы расширяете библиотеку.Но наверняка вы можете использовать Dagger2 или Singleton, хотя есть некоторые противопоказания для поддержки экземпляра Appver, чтобы вы могли использовать его в адаптере, например

Также в реальной жизни Retrofit2 редко используется таким способом, обычно вы реализуете его с помощью RXJava2 или с такими компонентами архитектуры Google, как ViewModel, LiveData и LifeCycle

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