[android] How to use Volleyer

volley에 대해 검색하다가 Volley를 더 쉽고 강력하게, Volley Extensions 글을 봤다.

소스는 https://github.com/naver/volley-extensions 에 있지만, 솔직히 허접한 내 실력에는 저 소스를 보고 예제 만들기조차 힘들었다 ;;;;

나 같은 사람이 분명히 또 있을테니 약간이라도 도움이 되고자 이 글을 쓴다.

 

일단 예제 프로젝트를 만들고 라이브러리를 가져온다.

com.mcxiaoke.volley:library
com.navercorp.volleyextensions:volleyer

가 필요하다.

volley는 https://github.com/mcxiaoke/android-volley 에서 받을 수 있다.

나는 허접이라 소스를 받아서, 이클립스에서 열어서,  jar 파일로 만들어서 썼는데, 안드로이드 스튜디오에서는 설정에서 추가해주니까 아주 쉽다.

screenshot

 

package kr.susemi99.volleyersample.application;

import android.app.Application;

import com.android.volley.RequestQueue;
import com.navercorp.volleyextensions.volleyer.Volleyer;
import com.navercorp.volleyextensions.volleyer.factory.DefaultRequestQueueFactory;

public class MyApplication extends Application
{
  @Override
  public void onCreate()
  {
    super.onCreate();

    RequestQueue rq = DefaultRequestQueueFactory.create(this);
    rq.start();
    Volleyer.volleyer(rq).settings().setAsDefault().done();
  }
}

용도는 모르지만 느낌으로는 큐를 만들어서 세팅해준다는 것 같다.

일단 이렇게 해주고

<?xml version="1.0" encoding="utf-8"?>
<manifest
    package="kr.susemi99.volleyersample"
    xmlns:android="http://schemas.android.com/apk/res/android">

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

    <application
        android:name=".application.MyApplication" // add this line
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

이렇게 application에 추가해준다.

아마 실행할 때 한 번 호출해주는 클래스 인가보다. (이런거 있는 줄 이제서야 알았다 ;;;;)

 

이제부터는 https://github.com/naver/volley-extensions/tree/master/volleyer 에 나온 내용을 따라하면 된다.

 

 

private void request()
{
  Volleyer.volleyer().get("http://google.co.kr").withListener(listener).withErrorListener(errorListener).execute();
}

private Response.Listener<String> listener = new Response.Listener<String>()
{
  @Override
  public void onResponse(String response)
  {
    request();
  }
};

private Response.ErrorListener errorListener = new Response.ErrorListener()
{
  @Override
  public void onErrorResponse(VolleyError error)
  {
    request();
  }
};

이렇게해서 메모리 사용량을 살펴보니

이렇게 오르락내리락 한다.

 

내가하는 작업의 전부는 저 정도면 충분한 것들이라 메모리 문제는 신경 안 써도 되지 싶다.

 

지금 하는 프로젝트에 volleyer를 쓰고 있는데, aync task를 안 써도 돼서 무지 편하다 ㅎㅎ