Я могу перезвонить с помощью дооснащения 2 - PullRequest
0 голосов
/ 06 октября 2018

Могу ли я перезвонить, если в мобильном телефоне нет интернета в onFailure?

Код:

private void ShowData() {
    rv_categories.setVisibility(View.GONE);
    txt_loading.setVisibility(View.VISIBLE);
    Loading();
    Retrofit retrofit = new Retrofit.Builder().baseUrl("*****").addConverterFactory(GsonConverterFactory.create()).build();
    RetrofitService retrofitService = retrofit.create(RetrofitService.class);
    Call<List<CategoriesModels>> call = retrofitService.get_categories();
    call.enqueue(new Callback<List<CategoriesModels>>() {
        @Override
        public void onResponse(Call<List<CategoriesModels>> call, Response<List<CategoriesModels>> response) {
            List<CategoriesModels> list = response.body();
            for (CategoriesModels i : list) {
                categoriesModels.add(new CategoriesModels(i.getId(), i.getTitle(), i.getPhoto(), i.getShortcut()));
            }
            Collections.shuffle(categoriesModels);
            categoriesAdapter = new CategoriesAdapter(CategoriesActivity.this, categoriesModels);
            rv_categories.setLayoutManager(new LinearLayoutManager(CategoriesActivity.this, LinearLayoutManager.VERTICAL, false));
            rv_categories.setAdapter(categoriesAdapter);
            rv_categories.setVisibility(View.VISIBLE);
            txt_loading.setVisibility(View.GONE);
        }

        @Override
        public void onFailure(Call<List<CategoriesModels>> call, Throwable t) {
            //I want when there is no Internet try call again
        }
    });
}

Если я не могу перезвонить,есть ли другой способ?

1 Ответ

0 голосов
/ 08 октября 2018

В соответствии с документацией :

Используйте клон (), чтобы сделать несколько вызовов с одинаковыми параметрами на один и тот же веб-сервер;это может быть использовано для осуществления опроса или повтор сбой вызова

private void ShowData() {

    // ...

    Call<List<CategoriesModels>> call = retrofitService.get_categories();
    call.enqueue(new Callback<List<CategoriesModels>>() {
        @Override
        public void onResponse(@NonNull Call<List<CategoriesModels>> call,
                               @NonNull Response<List<CategoriesModels>> response) {
            // ...
        }

        @Override
        public void onFailure(@NonNull Call<List<CategoriesModels>> call, @NonNull Throwable t) {
            // I want when there is no Internet try call again

            // if not connected to network, create a new, identical call & re-try.
            if (!isNetworkAvailable()) {
                call.clone().enqueue(new Callback<List<CategoriesModels>>() {
                    @Override
                    public void onResponse(@NonNull Call<List<CategoriesModels>> call,
                                           @NonNull Response<List<CategoriesModels>> response) {
                        // re-try successful - handle response...
                    }

                    @Override
                    public void onFailure(@NonNull Call<List<CategoriesModels>> call,
                                          @NonNull Throwable t) {
                        // re-try failed - handle failure...
                    }
                });
            }
        }
    });

Для отслеживания подключения:

private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = Objects.requireNonNull(connectivityManager).getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...