마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

통신에서 volley 사용시 request를 핸들링 할 수 있을까요 ?

0 추천

안녕하세요! 

volley를 사용하여 통신을 처리 중입니다.

volley request를 핸들링하고싶습니다. 어떤 의미인지 설명드리자면,

 

먼저, volley를 아래와 같이 사용하고 있습니다.

제가 의도한 것은, 이 요청이 성공적으로 완료되던, 에러를 발생하던 간에

myFunction(); 을 실행하고 싶은 것입니다.

제가 작성한 코드처럼 해도 정상적으로 실행은 하지만, myFunction();을  각각 호출하는게 마음에 들지 않아서요 ㅜㅜ

 

결국은 volley request를 핸들링 하면 가능한 문제 인 것 같은데.. 잘 모르겠네요.

(request가 완료되었다는 신호를 제가 받을 수 있으면 그 다음에 myFunction();을 실행하면 될 것 같아서요..)

혹시 조언 부탁드립니다.

 

 

 

JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, url, null,

          new Response.Listener<JSONObject>() {

                    @Override

                    public void onResponse(JSONObject response) {

                              myFunction();

                    }

          }, new Response.ErrorListener() {

                    @Override

                    public void onErrorResponse(VolleyError error) {

                              myFunction();

                    }

          }); 

AppController.getInstance().addToRequestQueue(req);

 

학생개발자 님이 2015년 4월 1일 질문

3개의 답변

+1 추천

JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, URL, null,

          new Response.Listener<JSONObject>() {

               @Override
               public void onResponse(JSONObject response) {
               }

          }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                }

          }){
            @Override
            protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
                Response<JSONObject> resp = super.parseNetworkResponse(response);
                myFunction();
                return resp;
            }

            private void myFunction(){

            }

        };

        AppController.getInstance().addToRequestQueue(req);

 

익명사용자 님이 2015년 4월 2일 답변
이런 방법도 있었군요 ㄷㄷ
실패했을 때는 parseNetworkResponse가 호출이 안됩니다
0 추천
Volley를 써본적이 없어서 잘 모르겠지만

jar 형태로 참조한다면 오리지널 소스 수정이 불가할 것이고 프로젝트 라이브러리 형태로 참조한다면

직접 JsonObjectRequest 소스 열어서 리스너 전달하는 부분 찾아서 수정하시면 될 것 같군요
Gradler (109,780 포인트) 님이 2015년 4월 2일 답변
0 추천
이상하게 느껴지겠지만, 그렇게 하시면 됩니다.
쎄미 (162,410 포인트) 님이 2015년 4월 2일 답변
쎄미님이 2015년 4월 24일 reshown
...