• 强大的网络通信框架(不实现缓存)--第三方开源--AsyncHttpClient


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

     1 package com.zzw.testasynchttpclient;
     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.text.method.ScrollingMovementMethod;
    13 import android.widget.ImageView;
    14 import android.widget.TextView;
    15 import android.widget.Toast;
    16 
    17 public class MainActivity extends Activity {
    18 
    19     @Override
    20     protected void onCreate(Bundle savedInstanceState) {
    21         super.onCreate(savedInstanceState);
    22         setContentView(R.layout.activity_main);
    23 
    24         ImageView imageView = (ImageView) findViewById(R.id.imageView);
    25 
    26         TextView textView = (TextView) findViewById(R.id.textView);
    27         // 设置下拉
    28         textView.setMovementMethod(ScrollingMovementMethod.getInstance());
    29 
    30         useAsyncHttpClientGetString("http://www.cnblogs.com/zzw1994", textView);
    31 
    32         useAsyncHttpClientGetImage("http://pic.cnblogs.com/avatar/822717/20151120000857.png", imageView);
    33 
    34     }
    35 
    36     private void useAsyncHttpClientGetString(String url, TextView textView) {
    37 
    38         final TextView mTextView = textView;
    39         // 第一步,得到AsyncHttpClient对象
    40         AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    41         // 第二步,通过url获取数据
    42         asyncHttpClient.get(url, new AsyncHttpResponseHandler() {
    43 
    44             // 成功后返回的数据处理
    45             @Override
    46             public void onSuccess(int statusCode, Header[] headers, byte[] response) {
    47                 mTextView.setText(new String(response));
    48             }
    49 
    50             // 失败后返回的数据处理
    51             @Override
    52             public void onFailure(int statusCode, Header[] headers, byte[] response, Throwable error) {
    53                 Toast.makeText(getApplicationContext(), "请求失败", 1).show();
    54             }
    55         });
    56     }
    57 
    58     private void useAsyncHttpClientGetImage(String url, ImageView imageView) {
    59         final ImageView mImageView = imageView;
    60 
    61         // 第一步,得到AsyncHttpClient对象
    62         AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    63         // 第二步,通过url获取数据
    64         asyncHttpClient.get(url, new AsyncHttpResponseHandler() {
    65             // 成功后返回的数据处理
    66             @Override
    67             public void onSuccess(int statusCode, Header[] headers, byte[] response) {
    68                 BitmapFactory bitmapFactor = new BitmapFactory();
    69                 Bitmap bitmap = bitmapFactor.decodeByteArray(response, 0, response.length);
    70                 mImageView.setImageBitmap(bitmap);
    71             }
    72 
    73             // 失败后返回的数据处理
    74             @Override
    75             public void onFailure(int statusCode, Header[] headers, byte[] response, Throwable error) {
    76                 Toast.makeText(getApplicationContext(), "加载失败", 1).show();
    77             }
    78         });
    79     }
    80 
    81 }

    activity_main.xml:

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <TextView
     8         android:id="@+id/textView"
     9         android:layout_width="match_parent"
    10         android:layout_height="wrap_content"
    11         android:layout_weight="1"
    12         android:scrollbars="vertical"
    13         android:singleLine="false" />
    14 
    15     <ImageView
    16         android:id="@+id/imageView"
    17         android:layout_width="match_parent"
    18         android:layout_height="wrap_content"
    19         android:layout_weight="1" />
    20 
    21 </LinearLayout>
    activity_main.xml

    最后不要忘记加权限:

    1  <uses-permission android:name="android.permission.INTERNET" />
  • 相关阅读:
    Failed at the node-sass@4.13.1 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    页面跳转
    多行文字溢出显示省略号
    iview-select选择器组件的使用&设置默认选中的值
    iview中表单验证(遇到的问题)
    iview DatePicker type 为dateTime 时无法做表单验证!
    报错:[Vue warn]: Error in callback for watcher "value": "Value should be trueValue or falseValue."
    Jquery 数字滚动兼容小数
    validate表单验证-单独验证
    2020软件工程作业03
  • 原文地址:https://www.cnblogs.com/zzw1994/p/4989240.html
Copyright © 2020-2023  润新知