우동우동우's note

[Android] Volley 예제 만들어 보기 본문

Java & Android

[Android] Volley 예제 만들어 보기

우동우동우 2016. 6. 15. 18:55

지난번 포스팅에서 Volley 라이브러리를 include하는 방법을 알아보았다. 이번에는 Volley를 사용하는 간단한 예제를 보려고 한다. 예제를 만들어 보는 것은 사용 방법을 익히는 데에 있다. 나도 아직 많이 써본 게 아니기 때문에 간단한 예제 정도를 만들어 보려고 한다. 


소스는 여기 있다. 


volleytest.zip


안드로이드 스튜디오로 개발이 되어 있으니 참고하기 바란다. 


이제 소스를 간단하게 보려고 한다. 


MainActivity 소스 길이가 50줄 정도라 빈약하긴 하지만.. 그래도 사용법만 알고 넘어가자는 취지기 때문에..

일반적으로 안드로이드 앱에서 HTTP Request를 보내면 TEXT 형태로 읽어서 파싱을 해서 사용하는 경우가 많다. 또, 이 방법이 가장 예제를 만들기 간편하므로 본인의 편안함을 위해 이기적으로(?) 예제를 만들어 본다. 


자 이제 시작한다. 


예제 실행 결과 화면



이번 예제의 목표는 http://www.google.com/ 사이트에 접속해서 Response를 텍스트로 뿌리는 것을 목표로 한다. 


------

public class MainActivity extends AppCompatActivity {

    String TAG = "MAIN";

    RequestQueue queue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get View for showing text
        final TextView tv = (TextView) findViewById(R.id.responseText);

        // initialize request queue
        queue = Volley.newRequestQueue(this);

        // initialize URL address
        String url = "http://www.google.com";

        // initialize Request
        StringRequest sr = new StringRequest(Request.Method.GET, url,
                new Response.Listener() { // response listener
            @Override
            public void onResponse(String response) {
                tv.setText(response);
            }
        }, new Response.ErrorListener() { // Error listener
            @Override
            public void onErrorResponse(VolleyError error) {
                // do nothing...
            }
        });
        sr.setTag(TAG);

        // add a request to the queue
        queue.add(sr);
    }

    @Override
    protected void onStop() {
        super.onStop();
        // cancel request
        if(queue != null){
            queue.cancelAll(TAG);
        }
    }
}

------


13번 줄에서 layout에서 선언한 View를 가져온다. 

16번 줄에서는 RequestQueue를 initialize한다. 새로운 Queue를 생성해서 만들어 주는 작업이다. 만약 이러한 Queue를 하나로 유지하고 싶다면 Global로 하나로 만들어서 사용하면 된다. 

22번 줄은 Request 객체를 만드는 곳이다. 파라미터로는 method, url, responseListener, errorListener로 4개가 있다. 

34번 줄은 TAG를 붙이는 작업이다. TAG를 붙이는 이유는 onStop()에서 cancel 작업 시 cancel할 수 있도록 하기 위함이다. 


사용방법을 요약하면 Queue를 생성하고 Request를 만들고 add하면 끝이다. listener는 Request를 생성할 때 추가하면 된다. 


예제는 간단하다. 하지만 이것도 한순간 뿐이지 않나 생각이 든다. 예를 들어서 Header에 메시지를 넣어서 보내는 경우가 생긴다면 또 새롭게 Request를 만든다던가 코드를 추가를 한다던가 귀찮은 일들이 생길 것이다. 


그렇다고 해서 이 라이브러리가 쓸모 없다는 아니다. 어디까지나 사용방법은 사용방법일 뿐이다. Volley의 장점은 local cache에 가장 큰 장점이 있다. local cache를 자동으로 관리해주며, local cache에서 데이터를 가져오는 스레드를 별도로 관리 해준다. 이는 이미지를 가져오는 뷰에서 활용하기에도 아주 효율적이며 이 라이브러리에서 NetworkImageView도 제공하고 있어 간편하게 이미지를 로딩할 수 있는 View도 제공한다. Volley 외에도 다른 예제도 많으니 다른 라이브러리도 찾아봐야 겠다. 


오늘 포스팅은 여기까지 하겠다. 



Comments