Volley åºç¤ (Android ã¢ããªç¨ãããã¯ã¼ã¯ã©ã¤ãã©ãª)
æ¬è¨äºã§ã¯ãVolley ã®åºç¤é¨å (RequestQueue 㨠Request) ã«ã¤ãã¦è¿°ã¹ãã
Volley ã«ã¤ãã¦
ããªãã ã® Google IO ã§çºè¡¨ããã Google 製㮠Android ã¢ããªç¨ã®ãããã¯ã¼ã¯ã©ã¤ãã©ãªã Activity ã«è¡¨ç¤ºããæ å ±ãåå¾ããããã® HTTP ãªã¯ã¨ã¹ã *1 ãå¦çããã®ã«åãã¦ããããã§ããã
ãã®è¨äºãæåã«å ¬éããæç¹ã§ã¯ããã¾ãã¡ããã¨ããããã¥ã¡ã³ãã¯ãªãã£ãããç¾å¨ã§ã¯ Android Developers ã«ããã¥ã¡ã³ããããã
ãã®è¨äºã¯ãä¸ã®ããã¥ã¡ã³ãããªãã£ãæä»£ã«ã½ã¼ã¹ã³ã¼ããèªãã§å¾ãç¥èãªã©ãæ¸ãããã®ã§ããã
Volley ãä½¿ãæºå
ç¾å¨ã®ã¨ãã jar ã§é å¸ããããã¯ãã¦ãªãã®ã§ãã½ã¼ã¹ã³ã¼ãã git clone ãã¦ãã¦èªåã§ jar ãä½ããªãã½ã¼ã¹ã³ã¼ããã¯ã©ã¹ãã¹ã«å«ãã¦æ±ããªãããå¿ è¦ãããã å人çã«ã¯ jar ãä½ããããã½ã¼ã¹ã³ã¼ããç´æ¥ä½¿ãæ¹ããªã¹ã¹ã¡ (ã¡ãã£ã¨æ¸ãããã¦è©¦ãã¦ã¿ãããããã¨ããããããã®ã§)ã
RequestQueue 㨠Request
Volley ã®ä¸ã§æãéè¦ãªã¯ã©ã¹ã¯ãããã RequestQueue 㨠Request ã ã¨æãããã
Request (ã®ãµãã¯ã©ã¹) ãã¤ã³ã¹ã¿ã³ã¹åããã¨ãã«ãªã¯ã¨ã¹ãã®æ
å ±ã¨ã¬ã¹ãã³ã¹ã®æ±ãæ¹ãä¸ãã¦ããã¦ããã®ã¤ã³ã¹ã¿ã³ã¹ã RequestQueue#add(Request) ã¡ã½ããå¼ã³åºãã§æ¸¡ãã¦ããã ãã§ HTTP ãªã¯ã¨ã¹ãããªãããã ((ä¸ã®ä¾ã§ã¯ JsonArrayRequest ã³ã³ã¹ãã©ã¯ã¿ã®å¼æ°ã«ç¡åå
é¨ã¯ã©ã¹ãã¤ã³ã¹ã¿ã³ã¹åãã¦æ¸¡ããã¨ã§ã³ã¼ã«ããã¯ãè¨å®ãã¦ããããå®éã«è¨è¿°ããã¨ãã¯ããã¡ãã£ã¨ã¾ã¨ããªæ¸ãæ¹ãããæ¹ãããã ããã))
// å¿ è¦ãª import æ import com.android.volley.toolbox.Volley; // ä¾ãã° Activity ã® onStart ã¡ã½ããã§ RequestQueue ã®ã¤ã³ã¹ã¿ã³ã¹ãåå¾ or start // mRequestQueue 㯠RequestQueue åã®ã¤ã³ã¹ã¿ã³ã¹å¤æ° if (mRequestQueue == null) { mRequestQueue = Volley.newRequestQueue(this); } else { mRequestQueue.start(); }
// å¿ è¦ãª import æ import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; import org.json.JSONArray; // ãªã¯ã¨ã¹ããæãã JsonArrayRequest req = new JsonArrayRequest("http://example.com/hoge/fuga/test.json", new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { // ã¬ã¹ãã³ã¹åãåãæã®å¦ç... } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // ã¨ã©ã¼æã®å¦ç... } }); mRequestQueue.add(req);
Request ã®ãµãã¯ã©ã¹
Request ã¯æ½è±¡ã¯ã©ã¹ãªã®ã§ãå®éã«ä½¿ãã¨ã㯠Volley ã«å«ã¾ãã¦ãããµãã¯ã©ã¹ã使ãããèªåã§ãµãã¯ã©ã¹ãå®ç¾©ãã¦ããå¿
è¦ãããã
Volley ã«ã¯æ¬¡ã®ãã㪠Request ã®ãµãã¯ã©ã¹ãå«ã¾ãã¦ããã
StringRequestã¯ã©ã¹ImageRequestã¯ã©ã¹JsonRequestã¯ã©ã¹ (æ½è±¡ã¯ã©ã¹)JsonArrayRequestã¯ã©ã¹JsonObjectRequestã¯ã©ã¹ClearCacheRequestã¯ã©ã¹
ã©ãããä½¿ãæ¹ãããã®ãã¯ã½ã¼ã¹ã³ã¼ããèªãã°ããã«ãããã¯ãã
RequestQueue ã®ã¤ã³ã¹ã¿ã³ã¹å
RequestQueue ã®ã³ã³ã¹ãã©ã¯ã¿ã¨ãã¦æ¬¡ã® 3 ã¤ãåå¨ããã
public RequestQueue(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery)public RequestQueue(Cache cache, Network network, int threadPoolSize)public RequestQueue(Cache cache, Network network)
詳細ã¯å¾è¿°ããããCache ã Network ã®å®è£
ããªãã¸ã§ã¯ãã¨ãã¦ä¸ããããããã«ãªã£ã¦ããã
ã¾ããããã©ã«ãå®è£
ãæã¤ RequestQueue ã¤ã³ã¹ã¿ã³ã¹ãè¿ã Volley.newRequestQueue(Context) ã¡ã½ãããããã RequestQueue ã®ã³ã³ã¹ãã©ã¯ã¿ã使ç¨ããå ´åã Volley.newRequestQueue(Context) ã¡ã½ããã®å®è£
ãåèã«ããã¨ããã ããã Volley.newRequestQueue(Context) ã¡ã½ããã§çæããã RequestQueue ã¯æ¢ã«åãã¦ããç¶æ
((start ã¡ã½ãããå¼ã°ããå¾ã®ç¶æ
ã)) ã«ãªã£ã¦ããç¹ã«ã¯æ³¨æãå¿
è¦ã§ããã
RequestQueue#start() ã¡ã½ãã㨠RequestQueue#stop() ã¡ã½ãã
RequestQueue å
é¨ã®ã¹ã¬ãããèµ·åãããçµäºãããããããã®ã¡ã½ããã¨ãã¦æ¬¡ã® 2 ã¤ãããã
RequestQueue#start()ã¡ã½ããRequestQueue#stop()ã¡ã½ãã
Activity ã® onStop ã¡ã½ãã ((onPause ã®æ¹ãããã®ããª?)) ã§ stop ããonStart ã¡ã½ããã§ start ãããªã©ãé©åãªå ´æã§ãããã®ã¡ã½ãããå¼ã³åºããã¨ã
ãªã¯ã¨ã¹ãã®ãã£ã³ã»ã«
Request#cancel() ã¡ã½ããã¨ãããã®ãããããªã¯ã¨ã¹ãã®ãã£ã³ã»ã«ãã§ããããã«ãªã£ã¦ããã
å®éã«ä½ãè¡ããã¦ãããã¨ããã¨ãRequest#cancel() ã¡ã½ãããå¼ã°ãã㨠Request ãªãã¸ã§ã¯ãã«ãã£ã³ã»ã«ãã©ã°ãç«ã¤ã ãã§ããã ããã¦ããã¥ã¼ããåãåºããã Request ãªãã¸ã§ã¯ãã«ãã£ã³ã»ã«ãã©ã°ãç«ã£ã¦ããå ´åã¯ããããã¯ã¼ã¯éä¿¡ãè¡ããªããã¨ããç¨åº¦ã®å¦çãå
¥ãã ãã£ã½ãã ãããã¯ã¼ã¯éä¿¡ãéå§ãããå¾ã 㨠Request#cancel() ã¡ã½ããã®å¼ã³åºãã¯ãã¾ãæå³ããªãããã«æããã
RequestQueue#cancelAll ã¡ã½ããã¨ããã®ãããããã¡ã㯠RequestQueue ãä¿æãã¦ãã Request ã®ãã¡ãæ¡ä»¶ã«åããã®ãã¹ã¦ã«å¯¾ã㦠cancel ã¡ã½ããå¼ã³åºããè¡ãã¨ãããã®ã§ããã
ç¡é§ãªãªã¯ã¨ã¹ããè¡ããªãããã«ãå¿ è¦ã«å¿ãã¦ãªã¯ã¨ã¹ãã®ãã£ã³ã»ã«ããããã¨ã
RequestQueue ã®å®è£
ã«ã¤ãã¦
RequestQueue ã®å
é¨ã®å¦çãã©ã®ããã«è¡ããã¦ãããã¨ããã¨ã以ä¸ã®ãããªæãã ã£ãã ãã£ããããå³ã ãå¾®å¦ã«ãããã«ãããã©ã
Request ãªãã¸ã§ã¯ããæ ¼ç´ãããã¥ã¼ã 2 æ¬ãã£ã¦ããããããã£ãã·ã¥å
ã«åå¨ãã¦ããå ´åç¨ã¨ãããã¯ã¼ã¯éä¿¡ã§åå¾ããç¨ã«ãªã£ã¦ããã åãã¦ãã RequestQueue ãè¡ãå¦çã¯åºæ¬çã«æ¬¡ã®ãã¨ã ãã§ãã *2ã
RequestQueueãRequestãåãåã£ãå¾ãæåã«Cacheã«ãªã¯ã¨ã¹ã対象ãåå¨ãããã©ãã確èªãã- ãªã¯ã¨ã¹ãããã£ãã·ã¥ãããã¹ããã®ã§ãªããªããããã¯ã¼ã¯ããåå¾ããç¨ã®ãã¥ã¼ã«
Requestãå ¥ãã - ãããªããã°ãã£ãã·ã¥ç¨ã®ãã¥ã¼ã«
Requestãå ¥ãã
- ãªã¯ã¨ã¹ãããã£ãã·ã¥ãããã¹ããã®ã§ãªããªããããã¯ã¼ã¯ããåå¾ããç¨ã®ãã¥ã¼ã«
ãã¨ã¯å¾ãã§åãã¦ããå¥ã®ã¹ã¬ããããããªã«å¦çãè¡ã£ã¦ããã¦ãæçµçã« Request ã®ã¡ã½ãããå¼ã°ãã¦ã¬ã¹ãã³ã¹ã渡ãããã

使ãå´ãå®è£ ãå®ç¾©ã§ããé¨å
ä¸ã®å³ã®ãã³ã¯è²ã®èæ¯è²ã®é¨åã¯ã¤ã³ã¿ã¼ãã§ã¤ã¹ (ã¾ãã¯æ½è±¡ã¯ã©ã¹) ã§ãããRequestQueue ã¨å®è£
ãçµã³ä»ãã¦ããããã§ã¯ãªãç®æã§ããã ãããã«ã¤ãã¦ã¯ãRequestQueue ã®ã¤ã³ã¹ã¿ã³ã¹åæã«ãªãã¸ã§ã¯ããæ¸¡ãã¦ãããã¨ã§ãRequestQueue å©ç¨è
å´ãå®è£
ãå®ç¾©ã§ããã
ã¾ãããããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£ ããã¯ã©ã¹ã Volley ã«ã¯å ¥ã£ã¦ããã®ã§ããããã£ãã¯ã©ã¹ã使ç¨ãããã¨ãã§ããã
ä¾ãã°ãCache ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®è£
ããã¯ã©ã¹ã¨ãã¦ã¯ DiskBasedCache ã NoCache ã Volley ã«å«ã¾ãã¦ããã ç¬èªã«ãã£ãã·ã¥æ¹å¼ãå®ç¾©ãããå ´åãªã©ã¯èªåã§ã¯ã©ã¹ãå®ç¾©ã㦠RequestQueue ã®ã¤ã³ã¹ã¿ã³ã¹åæã«ãã®ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã渡ãã¦ããã°ããã
ã¾ã¨ã
RequestQueue#addã¡ã½ããå¼ã³åºãæã«Requestã®ãµãã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã渡ããã¨ã§ãªã¯ã¨ã¹ããå¦çããã (ããã¯ã°ã©ã¦ã³ãã¹ã¬ããã§)RequestQueueã¯å é¨ã§ãã£ãã·ã¥ã使ç¨ãã- ãã£ãã·ã¥ã®å®è£ ã¯ã©ã¤ãã©ãªå©ç¨è ãå®ç¾©ã§ãã
- ããã©ã«ãå®è£ ã¨ãã¦ãã¡ã¤ã«ã·ã¹ãã ã使ã£ããã£ãã·ã¥ãªã©ã Volley ã«å«ã¾ãã¦ãã
- ãããã¯ã¼ã¯éä¿¡ã®å®è£
ãã©ã¤ãã©ãªå©ç¨è
ãå®ç¾©ã§ãã
- ããã©ã«ãå®è£ ã Volley ã«å«ã¾ãã¦ããã®ã§ãç¹ã«ã«ã¹ã¿ãã¤ãºãå¿ è¦ã§ãªããã°ããã使ç¨ããã°ãã
- é©åãªå ´æã§ããã¯ã°ã©ã¦ã³ãã¹ã¬ããã®éå§ã¨åæ¢ãè¡ããã¨
Activityã®onStartã¡ã½ããã§RequestQueueãstart(ä¸ä¾)Activityã®onStopã¡ã½ããã§RequestQueueãstop(ä¸ä¾)
- ä¸è¦ã«ãªã£ã
Requestã«å¯¾ãã¦ã¯cancelã¡ã½ãããå¼ã³åºããã¨

æºå¸¯OSæç§æ¸ Androidã¢ããªã±ã¼ã·ã§ã³æè¡è ãã¼ã·ãã¯
- ä½è : æéä¼ç¤¾ãã¬ãã¸ãã¶ã¤ã³å±±æ¬éå
- åºç社/ã¡ã¼ã«ã¼: ç¿æ³³ç¤¾
- çºå£²æ¥: 2011/12/17
- ã¡ãã£ã¢: åè¡æ¬ï¼ã½ããã«ãã¼ï¼
- è³¼å ¥: 2人 ã¯ãªãã¯: 43å
- ãã®ååãå«ãããã° (7ä»¶) ãè¦ã
åèè¨äº
Volley ã«ã¤ãã¦ã¯ãæ¥æ¬èªã§ã¯ä»ã®ã¨ããæ¬¡ã®è¨äºãããããããã¾ã¨ã¾ã£ã¦ãã¦åèã«ãªãã