Handler

AsyncTask

HTTPURLConnection使用

get方式使用

private void initData() {

new Thread(() -> {

try {

//创建远程url连接对象

URL url = new URL(smartUrl);

//通过远程url对象打开一个连接,强制转换为HttpUrlConnection类型

HttpURLConnection con = (HttpURLConnection) url.openConnection();

//获取结果码

int responseCode = con.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

//通过连接对象获取一个输入流,向远程读取

InputStream inputStream = con.getInputStream();

//封装输入流is,并指定字符集

InputStreamReader ist = new InputStreamReader(inputStream);

char[] chars = new char[1024];

int len = 0;

StringBuffer sb = new StringBuffer();

while ((len = ist.read(chars)) != -1) {

sb.append(chars, 0, len);

}

String json = sb.toString();

Message message = Message.obtain();

message.what = 1;

message.obj = json;

handler.sendMessage(message);

}

} catch (Exception e) {

e.printStackTrace();

}

}).start();

}

Handler handler = new Handler() {

@Override

public void handleMessage(@NonNull Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 1:

String json = (String) msg.obj;

SmartBean smartBean = new Gson().fromJson(json, SmartBean.class);

List results = smartBean.getResults();

ArrayList list = new ArrayList<>();

list.addAll(results);

SmartAdapter adapter = new SmartAdapter(MainActivity.this, list);

lv_smart.setAdapter(adapter);

break;

}

}

};

post方式使用

private void login() {

new Thread(() -> {

try {

//登录url

String loginUrl = "https://www.wanandroid.com/user/login";

// 创建远程url连接对象

URL url = new URL(loginUrl);

//通过远程url对象打开一个连接,强制转换为HttpUrlConnection类型

HttpURLConnection con = (HttpURLConnection) url.openConnection();

//设置连接方式:POST

con.setRequestMethod("POST");

//设置超时

con.setConnectTimeout(10000);

con.setReadTimeout(10000);

//设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个

//setDoOutput默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

con.setDoOutput(true);

//setDoInput默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无

con.setDoInput(true);

//设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式

con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

//通过连接对象获取一个输出流

OutputStream os = con.getOutputStream();

//通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的

String param = "username=anfly&password=123456";

os.write(param.getBytes());

//获取结果码

int responseCode = con.getResponseCode();

if (responseCode == 200) {

//通过连接对象获取一个输入流,向远程读取

InputStream is = con.getInputStream();

//封装输入流is,并指定字符集

InputStreamReader isr = new InputStreamReader(is);

char[] chars = new char[1024];

StringBuffer sb = new StringBuffer();

int len = 0;

while ((len = isr.read(chars)) != -1) {

sb.append(chars, 0, len);

}

//sb转为string

String json = sb.toString();

Log.e("TAG", "json=" + json);

//关流

is.close();

isr.close();

}

//关流

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}).start();

}

android开发多线程编程,Android多线程编程相关推荐

  1. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  2. 全网最全Android开发工具,Android开发框架大全

    涵盖Android方方面面的技术, 目前保持更新. 时刻与Android开发流行前沿同步. 目录 一.工具 Android开发工具 在线工具宝典大全 二.框架 *缓存框架* DiskLruCache ...

  3. Android 开发工具集合 - (Android Dev Tools)

    收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具. ...

  4. 视频教程-快速入门Android开发 视频 教程 android studio-Android

    快速入门Android开发 视频 教程 android studio 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我 ...

  5. 老罗Android开发视频教程( android解析json数据 )4集集合

    老罗Android开发视频教程( android解析json数据 )4集集合 老罗Android开发视频教程( android解析json数据 ) 第一集android解析json数据 http:// ...

  6. [android开发必备]Android开发者社区汇总

    [android开发必备]Android开发者社区汇总 经常收到很多人问做android开发去哪个社区,每次都回答的零零碎碎的很比系统,今天统一整理下,把截至目前为止有价值的android开发社区汇总 ...

  7. Android开发工具视频Android 12(S)准备

    Android开发工具视频Android 12(S)准备 适配步骤 下载最新的Android studio工具,点我到官网下载最新的吧! 最新版的studio规定jdk使用必须至少11,所以请移步下载 ...

  8. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java 1 package com.wangjialin.internet.service.downloader; 2 3 import jav ...

  9. android开发按钮颜色,Android编程实现简单设置按钮颜色的方法

    本文实例讲述了Android编程实现简单设置按钮颜色的方法.分享给大家供大家参考,具体如下: 1.工程目录 a.在res目录-新建drawble文件夹放入自定义图片 2.main.xml androi ...

  10. Android开发学习之路--网络编程之初体验

    一般手机都是需要上网的,一般我们的浏览器就是个webview.这里简单实现下下功能,先编写Android的layout布局: <?xml version="1.0" enco ...

最新文章

  1. 图像空间变换--imtransform
  2. MySQL数据库分组查询group by(having)
  3. android按钮随机数,Android随机数
  4. arcgiss如何在空白点图层加入坐标_连载 | 21 QGIS工程文件属性设置(2)——坐标参照系、变换、默认样式、数据源、关系和变量...
  5. ElasticSearch 深入理解 三:集群部署设计
  6. 关于 通过http请求 无法访问Linux下的ftp服务的解决办法!
  7. 产品经理经验谈:从产品经理、用户、产品的角度重新认知产品运营
  8. Android Telephony分析(七) ---- 接口扩展(异步转同步)
  9. 26.python常用端口号
  10. 手机内部零件名称图解_旧手机回收后都干嘛了?
  11. DeadXSpace项目进度
  12. 报错ValueError: check_hostname requires server_hostname
  13. spring aop源码分析总结
  14. 3.剑指Offer --- 高质量的代码
  15. idea 中 配置tomcat 启动 jsp项目
  16. 适合笔记本电脑看Kindle MOBI 电子书的软件
  17. asp.net 设置div带颜色透明
  18. 【USACO题库】5.2.1 Snail Trails蜗牛的旅行
  19. 你的登录接口真的安全吗?
  20. 【VUE】在vue中使用google地图

热门文章

  1. 【数据显示:比特币单日交易费用是BCH和BSV一年交易费用的4倍】
  2. BTC震荡调整后的新一轮爆发将要开启,BCH姿态逐渐明显
  3. BCH踏着优化升级路线,在数字货币界声名鹊起
  4. Java并发编程之线程状态总结
  5. 手挽手带你学React:四档(上)一步一步学会react-redux (自己写个Redux)
  6. 区块链开发公司能做什么?对企业未来市场有何帮助?
  7. 数组的遍历你都会用了,那Promise版本的呢
  8. iOS多线程:『NSOperation、NSOperationQueue』详尽总结
  9. ASP.NET弹出模态对话框
  10. ***如何优雅的选择字体(font-family)