android-chobo
20
2019-07-12 14:55:58
2
159

안드로이드 Retrofit2 통신 완료 시점을 어떻게 알 수 있나요?


stackoverflow에 HttpLoggingInterceptor 를 사용하라는데 Retrofit2만의 쓰레드 메커니즘이 있어서 테스트를 해볼지 고민중입니다..


현재 Retrofit2, recyclerview, viewpager를 사용중인데 viewpager로 스와이프를 막하다가 Retrofit2가 통신을 완료하지 않은 시점에 recyclerview의 view를 보여주여주려니 오류가 발생합니다.


E/RecyclerView: No adapter attached; skipping layout


통신이 완전히 완료되어 데이터를 완벽하게 받아온 시점을 알 수 있을까요? 

0
0
  • 답변 2

  • 로직X
    416
    2019-07-12 15:19:22

    어떤식으로 쓰시는지 모르겠지만..

    보통은 onResponse 에서 응답값을 판단하죵.

    response code 200 확인하면되지 않을까요


    0
  • android-chobo
    20
    2019-07-12 15:35:27 작성 2019-07-12 15:36:57 수정됨


    public void getData(String WSName, String WMName,HashMap<String, String> parameters, final RetroCallback callback) {
            apiService.getData(WSName,WMName,parameters).enqueue(new Callback<ResponseMultiGet>() {
                @Override
                public void onResponse(Call<ResponseMultiGet> call, Response<ResponseMultiGet> response) {
                    if (response.isSuccessful()) {
                        callback.onSuccess(response.code(), response.body());
                    } else {
                        Log.d("통신 URL",response.raw().request().url().toString());
                        callback.onFailure(response.code());
                    }
                }
    
                @Override
                public void onFailure(Call<ResponseMultiGet> call, Throwable t) {
                    callback.onError(t);
                }
            });
        }



    onSuccess를 사용한 클래스에서

    1. Web 통신을 통해 받은 데이터들을 리사이클러뷰 모델에 맞게 넣음

    2. 그 객체들을 리사이클러뷰 어댑터에 ADD

    막 스와이핑 하다보면 10번중에 2번정도는 위에 명시한 에러가 뜹니다

    완벽하게 데이터를 받은 후에 리사이클러뷰 어댑터에 넣고싶은데 팁 있을까요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.