我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android异步请求服务器数据示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android异步请求服务器数据示例

1、在android4.0以后的版本,主线程(UI线程)不在支持网络请求,原因大概是影响主线程,速度太慢,容易卡机,所以需要开启新的线程请求数据;

代码如下:
thread1 = new Thread(){
@Override
public void run() {
  try {
    URL url = new URL(WebUrlManager.CARSEVER_GetCarsServlet);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
    //缓冲读取
    byte[] data = new byte[1024];
    int len = 0;
    String bufferString = "";
    while((len = bis.read(data)) != -1){
bufferString+=new String(data, 0, len);
    }
    carList = new JSONArray(bufferString.trim());
    //System.out.println(carList);
   
    //当线程还没结束,就睡500毫秒ms
    while(!flag){
  try {
    Thread.sleep(500);
  } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}}}

3、处理返回的json数据
1)向服务器请求Json数据,保存在carList

代码如下:
URL url = new URL(WebUrlManager.CARSEVER_GetCarsServlet);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
//缓冲读取
byte[] data = new byte[1024];
int len = 0;
String bufferString = "";
while((len = bis.read(data)) != -1){
bufferString+=new String(data, 0, len);
}
carList = new JSONArray(bufferString.trim());

2)解析Json数据

代码如下:
JSONObject car = (JSONObject) getItem(position);
try {
//this.pic.setImageBitmap(carImageArray.get(position));
this.title.setText(car.getString("title"));
this.describe.setText(car.getString("describe"));
this.updateTime.setText(car.getString("updateTime"));
this.price.setText(String.format("%.1f", car.getDouble("price"))+"万");
this.pic.setTag(WebUrlManager.CARSERVER_CAR_IMAGE+car.getString("image"));
new AsyncViewTask().execute(this.pic);
} catch (JSONException e1) {
e1.printStackTrace();
}

4、图片加载通常很慢,最好异步请求
异步请求类源代码
代码如下:
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.webkit.URLUtil;
import android.widget.ImageView;
public class AsyncViewTask extends AsyncTask {
private View mView;
private HashMap> imageCache;

public AsyncViewTask() {
  imageCache = new HashMap>();
}
protected Drawable doInBackground(View... views) {
  Drawable drawable = null;
  View view = views[0];
  if (view.getTag() != null) {
if (imageCache.containsKey(view.getTag())) {
SoftReference cache = imageCache.get(view.getTag().toString());
drawable = cache.get();
if (drawable != null) {
  return drawable;
}
}
try {
if (URLUtil.isHttpUrl(view.getTag().toString())) {// 如果为网络地址。则连接url下载图片
  URL url = new URL(view.getTag().toString());
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setDoInput(true);
  conn.connect();
  InputStream stream = conn.getInputStream();
  drawable = Drawable.createFromStream(stream, "class="lazy" data-src");
  stream.close();
} else {// 如果为本地数据,直接解析
  drawable = Drawable.createFromPath(view.getTag().toString());
}
} catch (Exception e) {
Log.v("img", e.getMessage());
return null;
}
  }
  this.mView = view;
  return drawable;
}
protected void onPostExecute(Drawable drawable) {
  if (drawable != null) {
ImageView view = (ImageView) this.mView;
view.setImageDrawable(drawable);
this.mView = null;
}}}

您可能感兴趣的文章:Android异步消息机制详解android开发教程之handle实现多线程和异步处理Android中BroadcastReceiver(异步接收广播Intent)的使用Android多线程及异步处理问题详细探讨Android加载对话框同时异步执行实现方法android开发教程之handler异步更新uiAndroid App中实现图片异步加载的实例分享详解Android的OkHttp包编写异步HTTP请求调用的方法Android最基本的异步网络请求框架全面总结Android中线程的异步处理方式Android编程实现异步消息处理机制的几种方法总结


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android异步请求服务器数据示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android异步请求服务器数据示例

1、在android4.0以后的版本,主线程(UI线程)不在支持网络请求,原因大概是影响主线程,速度太慢,容易卡机,所以需要开启新的线程请求数据;代码如下:thread1 = new Thread(){@Overridepublic voi
2022-06-06

异步请求PHP服务器,不返回数据怎么办

本篇内容主要讲解“异步请求PHP服务器,不返回数据怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“异步请求PHP服务器,不返回数据怎么办”吧!
2023-06-28

Android客户端post请求服务器端实例

Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。 2. 解析服务器端返
2022-06-06

Android向node.js编写的服务器发送数据并接收请求

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下首先时node.js服务器端代码var http = require("http"); var fs = require("fs"); var queryS
2023-05-30

swoole HTTP服务器中异步MySQL的示例分析

这篇“swoole HTTP服务器中异步MySQL的示例分析”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“swoole HTTP服务器中异步MySQL的示例分析”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细
2023-06-14

Android解析服务器端发来的xml数据示例

Android跟服务器交互数据,有时数据量大时,就需要以xml形式的交互数据。这里来实现服务器给Android客户端发送xml数据,Android客户端解析。服务器端我使用dom4j第三方包来组织xml数据,大家可自行百度下载。而Andro
2022-06-06

详解node.js搭建代理服务器请求数据

1、引入node.js中的模块var http = require("http");var url = require("url");var qs = require("querystring");2、创建服务器//用node中的http创
2022-06-04

vue本地模拟服务器怎么请求mock数据

本篇内容介绍了“vue本地模拟服务器怎么请求mock数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原因1、mockjs本地开发的时候用还
2023-06-29

Twitter服务器的数据请求处理的过程有哪些

本篇内容主要讲解“Twitter服务器的数据请求处理的过程有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Twitter服务器的数据请求处理的过程有哪些”吧!一、twitter的核心业务tw
2023-06-10

云服务器包括数据库吗为什么没有显示网络异常

云服务器不包括数据库,它是指服务器中的数据存储在云端,而不是直接存储在数据服务器中。云服务器通常是一种虚拟的云计算资源池,包含了计算、存储和网络资源,并提供了一组API和服务,可以让客户端通过互联网访问这些资源,从而实现了资源的共享和访问。如果您发现云服务器的网络访问异常,可能有以下一些原因:网络连接问题:可能是您的网络连接出现了问题,比如断开或者无限制连接等。可以尝试重启计算机或者更换网络环境来解决问题。...
2023-10-27

编程热搜

目录