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 파일로 만들어서 썼는데, 안드로이드 스튜디오에서는 설정에서 추가해주니까 아주 쉽다.
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를 안 써도 돼서 무지 편하다 ㅎㅎ