Comment fermer response.body lorsque j'ai converti response.body() en classe POJO?Fermez response.body() en utilisant la classe POJO
public class RetrofitClient {
private static Retrofit retrofit = null;
private final static OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.connectTimeout(10, TimeUnit.SECONDS)
.build();
private final static Gson gson = new GsonBuilder().setLenient().create();
public static Retrofit getClient(String baseUrl) {
if (retrofit == null){
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
return retrofit;
}}
public static class GroupMembersCallback implements Callback<GroupAdminPreview>{
private List<String> usersUsername = new ArrayList<>();
private List<String> usersFullName = new ArrayList<>();
private List<String> usersIsAdmin = new ArrayList<>();
private GroupMembersAdapter membersAdapter;
private WeakReference<RecyclerView> mRecyclerView;
private WeakReference<Context> contextWeakReference;
public GroupMembersCallback(WeakReference<RecyclerView> mRecyclerView, WeakReference<Context> context){
this.mRecyclerView = mRecyclerView;
contextWeakReference = context;
}
@Override
public void onResponse(Call<GroupAdminPreview> call, Response<GroupAdminPreview> response) {
GroupAdminPreview groupAdminPreview = response.body();
for (GroupAdminPreview.GroupUser groupUser : groupAdminPreview.getGroupUsers()){
usersUsername.add(groupUser.getUserName());
usersFullName.add(groupUser.getFirstName() + " " + groupUser.getLastName());
usersIsAdmin.add(groupUser.getIsAdmin());
}
membersAdapter = new GroupMembersAdapter(usersUsername, usersFullName, usersIsAdmin, contextWeakReference, mRecyclerView);
mRecyclerView.get().setAdapter(membersAdapter);
}
@Override
public void onFailure(Call<GroupAdminPreview> call, Throwable t) {
System.out.println(t);
}
}
Je lis sur la fermeture response.body après avoir utilisé ce code:
ResponseBody body = response.body();
body.close();
Mais je ne peux pas faire la même chose quand je suis en utilisant la classe POJO. Désolé, je suis toujours un débutant dans le développement d'applications Android.
Après ma course d'application pendant un certain temps, je suis arrivé dans ce Android Moniteur:
A connection to ....... was leaked. Did you forget to close a response body?
Pourquoi pensez-vous que vous devez le fermer? –
@ cricket_007 Désolé, j'ai édité mon post pour mieux décrire mon problème. S'il vous plaît jeter un oeil si vous avez le temps. –
Plz fournisseur le code qui crée le retrofit et okhttp, en particulier le 'Interceptor' personnalisé. – aLeX