Volley网络连接
一、Volley
a burst or emission of many things or a large amount at once
Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
二、特点
异步任务下载图片的操作存在几个问题
1、 代码量大且繁琐
2、 ListView滚动太快,可能导致下载的图片无法正常显示
3、 可能浪费系统资源
4、 旋转屏幕可能导致再次下载
由此提出使用Volley替代 网络操作
但是只适合简单的网络操作:
1、 json/xml文本数据
2、 图片加载
不能用于大数据的下载 和 文件的上传
三、使用前准备
找到volley文件 (sdk版本文件下com/android/volley)
将volley文件内的内容(所有文件)复制到项目com.android.volley包下
删除类名带有Text 的测试java文件
四、下载文本数据的方法
1、StringRequest
package com.xqx.volleydemo; import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley; public class MainActivity extends Activity { //1、声明RequestQueue
private RequestQueue requestQueue;
private TextView tv_show;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://ikft.house.qq.com/index.php?guid=866500021200250&devua=appkft_1080_1920_XiaomiMI4LTE_1.8.3_Android19&order=0&searchtype=normal&devid=866500021200250&appname=QQHouse&mod=appkft&act=searchhouse&channel=71&page=1&rn=20&cityid=1";
tv_show = (TextView) findViewById(R.id.tv_show);
//2、实例化RequestQueue对象
requestQueue = Volley.newRequestQueue(this);
//下载数据,返回字符串格式的数据
StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//得到字符串数据response
tv_show.setText(response);
}
}, null);
//3、将请求添加到队列中
requestQueue.add(request);
} }
MainActivity.java
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <TextView
android:layout_gravity="center"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="下载的内容"
android:id="@+id/tv_show"
/> </FrameLayout>
activity_main
2、JsonObjectRequest
JsonObjectRequest request=new JsonObjectRequest(Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// TODO 请求成功
try {
JSONArray array=response.getJSONArray("data");
parseJson(array);
} catch (JSONException e) {
e.printStackTrace();
} }
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "请求出错", ).show();
}
});
method
五、加载图片的方法
1、ImageRequest
package com.xqx.volleydemo; import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView; import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.Volley; public class MainActivity extends Activity {
//1、声明RequestQueue
private RequestQueue requestQueue;
private ImageView img_show;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img_show = (ImageView) findViewById(R.id.img_show);
//2、实例化RequestQueue对象
requestQueue = Volley.newRequestQueue(this);
//加载图片
ImageRequest request = new ImageRequest("http://www.baidu.com/img/bd_logo.png",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
//图片下载成功后回调此方法
//TODO 设置ImageView
img_show.setImageBitmap(response);
}
},
//内存中Bitmap最大的宽度,高度限制,用于降低内存的消耗
, ,
//告诉BitmapFactory 在生产Bitmap的时候一个像素包含的信息
Bitmap.Config.ARGB_8888,
//图片加载失败的时候回调
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//TODO 显示加载失败的图片
img_show.setImageResource(R.drawable.ic_launcher);
}
}
);
//3、将请求添加到队列中
requestQueue.add(request);
}
}
MainActivity.java
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img_show"
/>
</FrameLayout>
activity_main.xml
2、ImageLoader
package com.xqx.volleydemo; import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.LruCache;
import android.widget.ImageView; import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley; public class MainActivity extends Activity { //1、声明RequestQueue
private RequestQueue requestQueue;
private ImageLoader imageloder;
private ImageView imgView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgView = (ImageView) findViewById(R.id.img_show); imageloder = new ImageLoader(requestQueue, new ImageLoader.ImageCache() { private LruCache<String,Bitmap> cache = new LruCache<>(); @Override
public Bitmap getBitmap(String url) { return cache.get(url);
} @Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url,bitmap);
}
});
imageloder.get("http://www.baidu.com/img/bd_logo.png"
, ImageLoader.getImageListener(imgView,R.drawable.ic_launcher,
android.R.drawable.ic_media_pause));
} }
MainActivity.java
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img_show"
/>
</FrameLayout>
activity_main.xml
Volley网络连接的更多相关文章
- Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比
比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有 ...
- 谷歌Volley网络框架讲解——BasicNetwork类
谷歌Volley网络框架讲解——BasicNetwork类 这个类是toolbox工具箱包里的,实现了Network接口. 先来看下Network这个interface,performRequest( ...
- Volley网络框架完全解析(缓存篇)
在上一篇中讲完了Volley框架怎么使用,那么这篇就来讲讲Volley框架的缓存机制 我们看Volley内部源码发现: Volley框架内部自己处理了DiskBasedCache硬盘缓存,但是没有处理 ...
- VMware的三种网络连接方式区别
关于VMware的三种网络连接方式,NAT,Bridged,Host-Only ,在刚接触的时候通常会遇到主机Ping不通虚拟机而虚拟机能Ping得通主机:主机与虚拟机互不相通等等网络问题.本文就这三 ...
- Win10搭建Linux开发环境之网络连接设定
一直想在家自己搭建一个LINUX服务器,好在上面安装个ORACLE数据库玩玩. 上次用了Ubuntu,结果ORACLE没装成功,现在换个思路,采用CentOS 7作为Linux服务器, 之后再进行构建 ...
- 【虚拟机】在VMware中安装Server2008之后配置网络连接的几种方式
VMware虚拟机的网络连接方式分为三种:桥接模式.NAT模式.仅主机(Host Only) (1)桥接模式 桥接模式即在虚拟机中虚拟一块网卡,这样主机和虚拟机在一个网段中就被看作是两个独立的IP地址 ...
- 网络连接详细信息出现两个自动配置ipv4地址
问题:网络连接详细信息出现两个自动配置ipv4地址,一个是有效地址,一个是无效地址. 解决办法:先将本地连接ip设置成自动获取,然后点击开始——>运行——>输入cmd,回车,进入命令行界面 ...
- MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)
时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是 ...
- VMware Workstation中网络连接之桥接、NAT和Host-only
在Windows XP系统中,安装好VMware Workstation虚拟机软件以后,我们可以查看一下"网络连接"窗口: 在窗口中多出了两块网卡: VMware Network ...
随机推荐
- CSDN 2013年度博客之星评选——分享几张厦门杭州的美图
亲爱的小伙伴们,作者在6号至20号,一直在休假中,出去也没带电脑,今天回家意外的发现自己有幸成为“CSDN 2013年度博客之星评选”的候选人,在此也谢谢各位小伙伴们的支持,谢谢CSDN的鼓励.我的投 ...
- 在server 2008/2003中 取消对网站的安全检查/去除添加信任网站
新安装好Windows Server 2003操作系统后,打开浏览器来查询网上信息时,发现IE总是“不厌其烦”地提示我们,是否需要将当前访问的网站添加到自己信任的站点中去:要是不信任的话,就无 ...
- js替换指定字符串
// var a = "212"; // var b = []; // for(var i=0;i<a.length;i++){ // if(a[i]=="1&qu ...
- Java -- 根据当前日期获取当前一周的所有日期
Learn From:http://my.oschina.net/hermer/blog/151274 /** * 测试 * @param args */ public static void mai ...
- 左倾堆(一)之 图文解析 和 C语言的实现
概要 本章介绍左倾堆,它和二叉堆一样,都是堆结构中的一员.和以往一样,本文会先对左倾堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理 ...
- Reinforcement Learning
Q-learning 高潮博文 http://mnemstudio.org/path-finding-q-learning-tutorial.htm 模式识别与机器学习的区别. http://www. ...
- Spring Remoting: Hessian--转
原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-hessian.jsp Concept Overview The p ...
- Hadoop入门进阶课程8--Hive介绍和安装部署
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- 『摄影欣赏』16幅 Romantic 风格照片欣赏【组图】
今天,我们将继续分享人类情感的系列文章.爱是人类最重要的感觉,也可能是各种形式的艺术(电影,音乐,书,画等)最常表达的主题 .这里有40个最美丽的爱的照片,将激励和给你一个全新的视觉角度为这种情绪.我 ...
- LeetCode——Jump Game II
Description: Given an array of non-negative integers, you are initially positioned at the first inde ...