Android第三方异步网路加载库AsyncHttpClient内部实现缓存策略
16lz
2021-01-23
Android平台上的AsyncHttpClient是一款比较流行的Android异步网路加载库,在github上的网址是: https://github.com/loopj/android-async-http
但是AsyncHttpClient和另外比较著名的Android异步网络库 Volley和Glide不同的是,不像Volley和Glide内部已经实现好了缓存策略,AsyncHttpClient自身没有实现缓存策略。
实验可以表明这点。
实验方法:我写一个简单的Android小程序,仅仅加载一张从网络获取的图片(我的CSDN博客头像),在联网时候启动这个程序,然后关闭手机设备的所以网络连接,此时再次启动该程序。
先给出测试的程序所有代码:
但是AsyncHttpClient和另外比较著名的Android异步网络库 Volley和Glide不同的是,不像Volley和Glide内部已经实现好了缓存策略,AsyncHttpClient自身没有实现缓存策略。
实验可以表明这点。
实验方法:我写一个简单的Android小程序,仅仅加载一张从网络获取的图片(我的CSDN博客头像),在联网时候启动这个程序,然后关闭手机设备的所以网络连接,此时再次启动该程序。
先给出测试的程序所有代码:
测试的主Activity:MainActivity.java
这是两个分开的例子 布局就不写了 注意写布局
注意:权限
<uses-permission android:name="android.permission.INTERNET"/>
加载图片代码:[java] view plain copy
- packagezhangphil.http;
- importorg.apache.http.Header;
- importcom.loopj.android.http.AsyncHttpClient;
- importcom.loopj.android.http.AsyncHttpResponseHandler;
- importandroid.app.Activity;
- importandroid.graphics.Bitmap;
- importandroid.graphics.BitmapFactory;
- importandroid.os.Bundle;
- importandroid.widget.ImageView;
- publicclassMainActivityextendsActivity{
- privatefinalStringurl="http://avatar.csdn.net/9/7/A/1_zhangphil.jpg";
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- finalImageViewimageView=(ImageView)findViewById(R.id.imageView);
- AsyncHttpClienthttpclient=newAsyncHttpClient();
- httpclient.get(url,newAsyncHttpResponseHandler(){
- @Override
- publicvoidonSuccess(intstatusCode,Header[]headers,
- byte[]response){
- BitmapFactorybitmapFactory=newBitmapFactory();
- Bitmapbitmap=bitmapFactory.decodeByteArray(response,0,
- response.length);
- imageView.setImageBitmap(bitmap);
- }
- @Override
- publicvoidonFailure(intstatusCode,Header[]headers,
- byte[]response,Throwableerror){
- error.printStackTrace();
- }
- });
- }
- }
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 {@Overrideprotected 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(){@Overridepublic void onFailure(int arg0, Header[] arg1, byte[] arg2,Throwable arg3) {Toast.makeText(getApplicationContext(), "失败", Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess(int statusCode, Header[] headers, byte[] response) {tv.setText(new String(response));} }); }}
更多相关文章
- Android(1.初识Android应用程序目录)
- Android应用程序添加自定义的property属性
- -用Gradle 构建你的android程序
- NetBeans 7.0 安装 Android SDK 开发 Android 应用程序
- android菜鸟学习笔记5----第一个android程序
- Android 应用程序结构介绍
- Android S5PV210 camera驱动测试程序