본문 바로가기
Development/Android

[안드로이드] Android Image Volley 분석 02

by 푸민 2015. 9. 16.
반응형



안녕하세요 푸민입니다.

저번 글에서 RequestQueue 라는 클래스를 만들때 Volley 클래스를 이용해서 만드는 것을 해보았습니다. 이어서 진행해 보면 RequestQueue 의 생성자를 보겠습니다.


public RequestQueue(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery) {

mCache = cache;

mNetwork = network;

mDispatchers = new NetworkDispatcher[threadPoolSize];

mDelivery = delivery;

}

 

public RequestQueue(Cache cache, Network network, int threadPoolSize) {

this(cache, network, threadPoolSize, new ExecutorDelivery(new Handler(Looper.getMainLooper())));

}

 

public RequestQueue(Cache cache, Network network) {

this(cache, network, DEFAULT_NETWORK_THREAD_POOL_SIZE);

}


Volley 클래스에서 newRequestQueue 를 하였을 때


RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network)


이렇게 생성합니다. 위의 생성자에서 보면 캐시와 네트워크를 받기 때문에 네트워크 쓰레드 풀을 디폴트 사이즈로 정의합니다.


private static final int DEFAULT_NETWORK_THREAD_POOL_SIZE = 4;


디폴트가 4이기 때문에 NetworkDispatcher를 4개 생성하고(배열로) 동시에 4개까지 처리를 합니다.


그리고 ExecutorDelivery 는 응답을 해주는 역활을 합니다. cache network 에서 값을 받은 다음 메인 Looper에 넘겨주는 역할을 합니다.


RequestQueue 는 생성이 된 후 start() 메소드를 호출하는데


public void start() {

stop(); 

mCacheDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCachemDelivery );

mCacheDispatcher.start();


for (int i = 0; i < mDispatchers.length; i++) {

NetworkDispatcher networkDispatcher = new NetworkDispatcher(mNetworkQueue, mNetworkmCache, mDelivery);

mDispatchers[i] = networkDispatcher;

networkDispatcher.start();

} 

}


cache network 디스패치들을 생성합니다.

이 클래스들은 각각 스레도로서 실제로 동작을 하는 클래스입니다.

반응형

댓글