import android.os.Handler;
import android.os.Message;

1.

Handler mHandler = new Handler() {

        @Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
progressBar.setVisibility(View.GONE);
myAdapter.notifyDataSetChanged();
break;
default:
break;
}
} };
 Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);

2.json解析:解析数据:

{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_body": {
"ret_code": 0,
"list": [
{
"prov": "河北",
"p90": "5.77",
"p0": "5.83",
"p95": "6.69",
"p97": "6.58",
"p89": "5.48",
"p92": "6.34",
"ct": "2017-05-31 07:02:32.408",
"p93": "6.22"
},
{
"prov": "山西",
"p90": "6.28",
"p0": "6.08",
"p95": "6.81",
"p97": "6.89",
"p89": "5.89",
"p92": "6.31",
"ct": "2017-05-31 07:02:32.403",
"p93": "6.39"
},
{
"prov": "内蒙古",
"p90": "6.46",
"p0": "6.69",
"p95": "6.77",
"p97": "7.25",
"p89": "",
"p92": "6.31",
"ct": "2017-05-31 07:02:32.396",
"p93": "6.75"
},
{
"prov": "辽宁",
"p90": "5.67",
"p0": "5.75",
"p95": "6.74",
"p97": "6.63",
"p89": "5.86",
"p92": "6.32",
"ct": "2017-05-31 07:02:32.394",
"p93": "6.21"
},
{
"prov": "吉林",
"p90": "5.62",
"p0": "5.76",
"p95": "6.81",
"p97": "6.69",
"p89": "6.1",
"p92": "6.31",
"ct": "2017-05-31 07:02:32.389",
"p93": "6.2"
},
{
"prov": "黑龙江",
"p90": "5.59",
"p0": "5.03",
"p95": "6.51",
"p97": "6.08",
"p89": "",
"p92": "6.14",
"ct": "2017-05-31 07:02:32.412",
"p93": "5.66"
},
{
"prov": "上海",
"p90": "5.79(沪89号)",
"p0": "5.81",
"p95": "6.72",
"p97": "6.6(沪95号)",
"p89": "6.02",
"p92": "6.31",
"ct": "2017-05-31 07:02:32.389",
"p93": "6.2(沪92号)"
}, ]
}
}

解析语句:

 //解析多个数据的Json
private void parseJsonMulti(String strResult) { try {
JSONArray jsonObjs = new JSONObject(strResult).getJSONObject("showapi_res_body").getJSONArray("list");
String s = "";
for(int i = 0; i < jsonObjs.length() ; i++){ JSONObject jsonObj = (JSONObject)jsonObjs.get(i);
Petrol petrol = new Petrol();
petrol.setProv(jsonObj.getString("prov"));
petrol.setP0(jsonObj.getString("p0"));
petrol.setP89(jsonObj.getString("p89"));
petrol.setP90(jsonObj.getString("p90")); petrol.setP92(jsonObj.getString("p92"));
petrol.setP93(jsonObj.getString("p93"));
petrol.setP95(jsonObj.getString("p95"));
petrol.setP97(jsonObj.getString("p97")); } } catch (JSONException e) {
System.out.println("Jsons parse error !");
e.printStackTrace();
}
}

json解析的时候可以使用opting,和getstring的区别就是

optString会在得不到你想要的值时候返回空字符串”“,而getString会抛出异常。

可以解决服务器字段缺少或者没有该字段而导致的异常以至于程序崩溃。

url get请求

URLConnection connection = null;
BufferedReader br = null;
try { StringBuffer sb = new StringBuffer();
URL url = new URL("http://route.showapi.com/138-46?showapi_appid=38170&showapi_sign=4860f68a39034b48a9214e5f38eded75&prov=");
connection = url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect(); InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
br = new BufferedReader(isr);
String strRead = null;
while ((strRead = br.readLine()) != null) {
sb.append(strRead); } parseJsonMulti(sb.toString());

catch (Exception e) {
e.printStackTrace();
System.out.println("发送get请求出现异常!" + e);
}finally {

}

android 异步线程刷新UI 以及 JSON解析 以及 url get请求的更多相关文章

  1. android 利用线程刷新UI方法

    新建线程new Thread(new Runnable() 线程方法:public void run() private void setAddWidgetEnabled(boolean enable ...

  2. Android -- ViewRoot,关于子线程刷新UI

    Android在4.0之后执行线程更新UI操作会报异常:CalledFromWrongThreadException:Only the original thread that created a v ...

  3. 线程池内的异步线程创建UI控件,造成UI线程卡死无响应的问题分析

    winform应用在使用一段时间后,切换到其他系统或者打开word.excel文档,再切换回winform应用时,系统有时出现不响应的现象.有时在锁屏后恢复桌面及应用时也发生此问题. 经微软支持确认, ...

  4. Android子线程更新UI成功

    android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...

  5. Android中使用异步线程更新UI视图的几种方法

    在Android中子线程是不能更新ui的. 所以我们要通过其他方式来动态改变ui视图, 1.runOnUiThreadactivity提供的一个轻量级更新ui的方法,在Fragment需要使用的时候要 ...

  6. Android子线程更新UI的方法总结

    版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...

  7. 安卓 异步线程更新Ui

    异步跟新UI: 1.handler+Thread(runnable):如果handler和Thread都写在了一个Java文件中,就不说了,如果runnable定义在了一个单独的类文件中,可以通过在构 ...

  8. Android子线程更新UI主线程方法之Handler

    背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...

  9. android子线程更新UI

    参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...

随机推荐

  1. ubuntu-15.04-desktop-i386.iso:ubuntu-15.04-desktop-i386:安装Oracle11gR2

    ubuntu 桌面版的安装不介绍. 如何安装oracle:核心步骤和关键点. ln -sf /bin/bash /bin/sh ln -sf /usr/bin/basename /bin/basena ...

  2. XLua系统学习

    官方网站:https://github.com/Tencent/xLua 学习手册:http://manual.luaer.cn/ 技术博客: http://blog.csdn.net/column/ ...

  3. Cookie示例

    //caozuocookie        var webusername = "";        function getCookie(name){ var arr,reg=n ...

  4. ubuntu下使用sublime text进行C编程开发尝鲜

    1 选择编译系统 2 编写文件,编译(Ctrl+B)运行(Shift+Ctrl+B)

  5. 怎样设置table中td的高度为1px

    在制作edm时会遇到须要设置td的高度为1px,假设td标签中有 时不管你怎么设置td的高度都没用,最小高度都是18px. 这时须要把表格中的 去掉.例: 原来是这种: <tr> < ...

  6. sqlite数据库下载安装和初步操作和所遇到的问题near &quot;sqlite3&quot;:syntax error

    1.下载sqlite数据库:http://www.sqlite.org/download.html 假设是在window上安装须要在 Windows 区下载预编译的二进制文件.如图下载下载 sqlit ...

  7. 【RF库Collections测试】Count Values In List

    Name:Count Values In ListSource:Collections <test library>Arguments:[ list_ | value | start=0 ...

  8. CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  9. 新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用

    说到嵌入式,我们首先想到的,就是它的复杂程度,LINUX,BSP,UBOOT,交叉编译,寄存器配置,等等一系列的问题,甚至有的时候我们对此一头雾水,很是头疼,不过我们今天要说的就是关于NUC972的一 ...

  10. http协议详解-摘抄

    引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/ ...