코딩하는 개굴이

[안드로이드] Volley 의 간단한 사용법 본문

안드로이드

[안드로이드] Volley 의 간단한 사용법

개굴이모자 2022. 9. 12. 23:49
반응형

이전에 아래의 포스팅에서 Volley 및 Retrofit 에 대하여 간략하게 다루었는데 이번에는 Volley 의 간단한 사용법에 대해 정리해보고자 한다.

https://yejinson97gaegul.tistory.com/entry/Retrofit-%EA%B3%BC-Volley-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

 

Retrofit 과 Volley 에 대하여

Retrofit 2 실습한 GITHUB 링크를 기반으로 조사하였습니다. OkHttp, Retrofit, Volley의 등장 배경 한때 HttpUrlConnection 이나 HttpsUrlConnection을 NetworkManager class에 넣고 AsyncTask로 접근하는 방식을..

yejinson97gaegul.tistory.com

 

Volley란?

Volley는 Http 통신을 쉽게 할 수 있도록 도와주는 라이브러리로, 자동 스케줄링, 동시 네트워크 연결, 요청 우선 순위 지원 등의 장점을 지니고 있다. (자세한 내용은 위 포스팅을 참고하도록 하자.)

 

Volley 적용을 위한 사전 준비

manifest 권한 등록

Http 통신을 위해서이니 INTERNET 권한의 등록이 필요하다.

<uses-permission android:name="android.permission.INTERNET"/>

 

라이브러리 추가

implementation 'com.android.volley:volley:1.2.1'

 

코드 구현

Volley의 동작 방법

Volley를 이용한 Http 통신 코드를 구현하기 전에 우선 Volley 의 기본적인 동작 구조에 대해 간단히 짚어보고 가도록 하자.

Volley는 먼저 Request 요청 객체를 생성해 RequestQueue 에 넣어주면 큐가 자동으로 요청을 해주고 응답을 받아 사용자가 사용할 수 있도록 지정된 메서드를 호출해준다.

 

구현

위에서 설명한 동작 방법에 맞게 간단히 생각해보자.

  • Request는 StringRequest를 사용해보자.
  • RequestQueue 가 있는지 확인하고 만일 없다면 생성해준다.
  • 생성된 StringRequest는 특정 상황이 되면 Queue에 add해준다.

위의 절차가 필요할 것이다. 버튼 클릭 시 Request를 요청하는 내용으로 MainActivity를 간단하게 구현해보자.

 

public class MainActivity extends AppCompatActivity  {
    RequestQueue queue;
    TextView responseTv;

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

        responseTv = findViewById(R.id.textView);
        Button requestBtn = findViewById(R.id.send_btn);

        //queue가 null 일 경우, 새로운 request queue 를 생성한다
        if(queue == null){
            queue = Volley.newRequestQueue(this);
        }

        String url = "https://~~~~";

        //String request 로 api 호출
        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //응답 처리
                responseTv.setText(response)
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //에러 처리
                responseTv.setText(error.toString())
            }
        });

        //버튼 클릭 시, 요청
        sendBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                queue.add(stringRequest);
            }
        });

    }//onCreate
}//MainActivity

 

Volley의 경우 Retrofit보다 다소 속도가 느릴 수 있으나

최적화하거나 네이버에서 공개한 Volley Extension이라는 커스텀 라이브러리 등을 사용한다면,

더 쉽고 편하게 네트워크 통신 처리를 할 수 있을 것이다.

 

참고 링크

반응형
Comments