response.body()를 POJO 클래스로 변환 할 때 response.body를 닫는 방법은 무엇입니까? POJO 클래스를 사용하여 response.body()를 닫습니다.
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);
}
}
은이 코드를 사용 후 response.body 폐쇄에 대해 읽어 :
ResponseBody body = response.body();
body.close();
하지만 POJO 클래스를 사용하고 때 나는 같은 일을 할 수 없습니다. 죄송합니다, 저는 아직 안드로이드 응용 프로그램을 개발하는 초보자입니다.
얼마 동안 내 응용 프로그램 실행 후, 나는 안드로이드 모니터에이있어 :
A connection to ....... was leaked. Did you forget to close a response body?
왜 닫아야한다고 생각하십니까? –
@ cricket_007 죄송합니다. 내 문제를 더 잘 설명하기 위해 내 게시물을 편집했습니다. 시간이 있으면보십시오. –
Plz 제공 업체는 개조 및 okhttp를 생성하는 코드, 특히 사용자 지정 'Interceptor'를 생성합니다. – aLeX