Volleyソース学習1-Volleyクラス
2363 ワード
Volleyを使用すると、まずこの文
return newRequestQueue(context, (BaseHttpStack) null); 2番目のリロードメソッドが呼び出されます
このコードはBasicNetworkを初期化し、その後、このクラスreturn newRequestQueue(context,network)を分析します.3番目のリロードメソッドが呼び出されます
このコードはRequestQueueオブジェクト、queue.start()を作成します.CacheDispatcher、NetworkDispatcherがスレッドを開きます.これで初期化作業が完了し、RequestQueueキューはキューからリクエストが発行されるのを待ってリクエストを行います.では、どうやって実現したのでしょうか.次にRequestQueueクラスを見てみましょう.
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
が呼び出され、戻り値はRequestQueueです.呼び出されたのはvolleyクラスの静的メソッドです.まずVolleyクラスを見ると、3つのリロードの静的方法があります.最初のpublic static RequestQueue newRequestQueue(Context context) {
return newRequestQueue(context, (BaseHttpStack) null);
}
return newRequestQueue(context, (BaseHttpStack) null); 2番目のリロードメソッドが呼び出されます
public static RequestQueue newRequestQueue(Context context, BaseHttpStack stack) {
BasicNetwork network;
if (stack == null) {
if (Build.VERSION.SDK_INT >= 9) {
network = new BasicNetwork(new HurlStack());
} else {
// Prior to Gingerbread, HttpUrlConnection was unreliable.
// See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
// At some point in the future we'll move our minSdkVersion past Froyo and can
// delete this fallback (along with all Apache HTTP code).
String userAgent = "volley/0";
try {
String packageName = context.getPackageName();
PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0);
userAgent = packageName + "/" + info.versionCode;
} catch (NameNotFoundException e) {
}
network = new BasicNetwork(
new HttpClientStack(AndroidHttpClient.newInstance(userAgent)));
}
} else {
network = new BasicNetwork(stack);
}
return newRequestQueue(context, network);
}
このコードはBasicNetworkを初期化し、その後、このクラスreturn newRequestQueue(context,network)を分析します.3番目のリロードメソッドが呼び出されます
private static RequestQueue newRequestQueue(Context context, Network network) {
File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);
RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network);
queue.start();
return queue;
}
このコードはRequestQueueオブジェクト、queue.start()を作成します.CacheDispatcher、NetworkDispatcherがスレッドを開きます.これで初期化作業が完了し、RequestQueueキューはキューからリクエストが発行されるのを待ってリクエストを行います.では、どうやって実現したのでしょうか.次にRequestQueueクラスを見てみましょう.