Перед нажатием api вы можете проверить, подключено ли ваше устройство или нет, затем нажмите api
public boolean isNetworkAvialable(Context context) {
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
. Этот метод возвращает значение true, если ваше устройство имеет подключение, отличное от него, и возвращает false.
и добавьте это разрешение
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Добавьте этот метод для ожидания ответа сервера
if (retrofit == null) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(interceptor.setLevel(HttpLoggingInterceptor.Level.BODY))
.connectTimeout(2, TimeUnit.MINUTES)
.writeTimeout(2, TimeUnit.MINUTES)
.readTimeout(2, TimeUnit.MINUTES)
.build();
retrofit = new Retrofit.Builder()
.baseUrl(ApplicationConstant.INSTANCE.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
}
return retrofit;
и добавьте эту зависимость
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'