안녕하세요 푸민입니다.
저번 글에서 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, mCache, mDelivery );
mCacheDispatcher.start();
for (int i = 0; i < mDispatchers.length; i++) {
NetworkDispatcher networkDispatcher = new NetworkDispatcher(mNetworkQueue, mNetwork, mCache, mDelivery);
mDispatchers[i] = networkDispatcher;
networkDispatcher.start();
}
}
cache 와 network 디스패치들을 생성합니다.
이 클래스들은 각각 스레도로서 실제로 동작을 하는 클래스입니다.
'Development > Android' 카테고리의 다른 글
[안드로이드] Android Image Volley 분석4 (0) | 2015.09.18 |
---|---|
[안드로이드] Android Image Volley 분석3 (0) | 2015.09.17 |
[안드로이드] Android Image Volley 분석 01 (0) | 2015.09.11 |
[안드로이드] Font 적용하기 (0) | 2015.09.10 |
[안드로이드] 이미지 슬라이딩, Flip 효과 (2) | 2015.09.09 |
댓글