Поскольку у меня возникла проблема утечки памяти при использовании okhttpclient
, как обсуждалось здесь , и я обновил модификацию до последней версии com.squareup.retrofit2:retrofit:2.5.0
, также я попытался закрыть тело, используя блок responseBody.close(); inside try{} catch(){}
, как указано здесь таким образом
appSettingService.getAppSetting().enqueue(new Callback<AppSettingModel.AppSettingMetaData>() {
@Override
public void onResponse(Call<AppSettingModel.AppSettingMetaData> call, Response<AppSettingModel.AppSettingMetaData> response) {
try (ResponseBody responseBody = response.body()) {
Log.e("res code appSetting", String.valueOf(response.code()));
if (response.isSuccessful()) {
List<AppSettingModel> results = response.body().getValue();
if (results != null && results.size() > 0) {
saveToDatabase(results.get(0));
}
}
responseBody.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<AppSettingModel.AppSettingMetaData> call, Throwable t) {
}
});
но я получил эту проблему в более низкой версии Android, так как приложение вылетает при работе на Api 16
, и это говорит об этой ошибке
java.lang.NoClassDefFoundError: javax/annotation/Nullable
at java.lang.reflect.Field.getAnnotation(Native Method)
at java.lang.reflect.Field.getAnnotation(Field.java:212)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldNames(ReflectiveTypeAdapterFactory.java:72)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:159)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
at com.google.gson.Gson.getAdapter(Gson.java:423)
at retrofit2.converter.gson.GsonConverterFactory.responseBodyConverter(GsonConverterFactory.java:64)
at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:328)
at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:311)
at retrofit2.HttpServiceMethod.createResponseConverter(HttpServiceMethod.java:68)
at retrofit2.HttpServiceMethod.parseAnnotations(HttpServiceMethod.java:46)
at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:36)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:168)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at $Proxy0.getAppSetting(Native Method)