Android第三方异步网路加载库AsyncHttpClient内部实现缓存策略

Android平台上的AsyncHttpClient是一款比较流行的Android异步网路加载库,在github上的网址是: https://github.com/loopj/android-async-http
但是AsyncHttpClient和另外比较著名的Android异步网络库 Volley和Glide不同的是,不像Volley和Glide内部已经实现好了缓存策略,AsyncHttpClient自身没有实现缓存策略。
实验可以表明这点。
实验方法:我写一个简单的Android小程序,仅仅加载一张从网络获取的图片(我的CSDN博客头像),在联网时候启动这个程序,然后关闭手机设备的所以网络连接,此时再次启动该程序。
先给出测试的程序所有代码:

测试的主Activity:MainActivity.java


这是两个分开的例子  布局就不写了 注意写布局

注意:权限

<uses-permission android:name="android.permission.INTERNET"/>

加载图片代码:[java]  view plain copy
  1. package zhangphil.http;  
  2.   
  3. import org.apache.http.Header;  
  4.   
  5. import com.loopj.android.http.AsyncHttpClient;  
  6. import com.loopj.android.http.AsyncHttpResponseHandler;  
  7.   
  8. import android.app.Activity;  
  9. import android.graphics.Bitmap;  
  10. import android.graphics.BitmapFactory;  
  11. import android.os.Bundle;  
  12. import android.widget.ImageView;  
  13.   
  14. public class MainActivity extends Activity {  
  15.   
  16.     private final String url = "http://avatar.csdn.net/9/7/A/1_zhangphil.jpg";  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.   
  22.         setContentView(R.layout.activity_main);  
  23.   
  24.         final ImageView imageView = (ImageView) findViewById(R.id.imageView);  
  25.   
  26.         AsyncHttpClient httpclient = new AsyncHttpClient();  
  27.   
  28.         httpclient.get(url, new AsyncHttpResponseHandler() {  
  29.   
  30.             @Override  
  31.             public void onSuccess(int statusCode, Header[] headers,  
  32.                     byte[] response) {  
  33.   
  34.                 BitmapFactory bitmapFactory = new BitmapFactory();  
  35.                 Bitmap bitmap = bitmapFactory.decodeByteArray(response, 0,  
  36.                         response.length);  
  37.                 imageView.setImageBitmap(bitmap);  
  38.             }  
  39.   
  40.             @Override  
  41.             public void onFailure(int statusCode, Header[] headers,  
  42.                     byte[] response, Throwable error) {  
  43.                 error.printStackTrace();  
  44.             }  
  45.         });  
  46.     }  
  47. }  
加载百度网络地址:

package com.example.async;

import org.apache.http.Header;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		final TextView tv=(TextView) findViewById(R.id.tv);
		
	    AsyncHttpClient httpclient = new AsyncHttpClient(); 
	    
	    

		String url="http://www.baidu.com";
	    httpclient.get(url, new AsyncHttpResponseHandler(){

			@Override
			public void onFailure(int arg0, Header[] arg1, byte[] arg2,
					Throwable arg3) {
				Toast.makeText(getApplicationContext(), "失败", Toast.LENGTH_SHORT).show();
				
			}

			@Override
			public void onSuccess(int statusCode, Header[] headers,  
                    byte[] response) {
				tv.setText(new String(response));
				
			}
	    	
	    });
	    
	    
	}


}


你可能感兴趣的:(android)