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. eclipse 远程链接访问hadoop 集群日志信息没有输出的问题l

    Eclipse插件Run on Hadoop没有用到hadoop集群节点的问题参考来源 http://f.dataguru.cn/thread-250980-1-1.html http://f.dat ...

  2. Cookie文件格式解析

    原文参考:http://blog.csdn.net/lixianlin/article/details/2738229 1.Cookie文件的实质 Cookie实际上是Web服务端与客户端(典型的是浏 ...

  3. jdbcType 与 Java type

    JDBC Type           Java Type CHAR                String VARCHAR             String LONGVARCHAR      ...

  4. ubuntu-12.04.5-desktop-amd64.iso:ubuntu-12.04.5-desktop-amd64:安装Oracle11gR2

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

  5. MathType手写输入面板清空的方法

    我们在文档中进行公式编辑的时候一般都会选用MathType数学公式编辑器来完成这个编辑过程,利用MathType里面的各种模板与符号可以编辑出很多我们需要的公式.最新版的word公式编辑器MathTy ...

  6. OpenCV学习:OpenCV源码编译(vc9)

    安装后的OpenCV程序下的build文件夹中,只找到了vc10.vc11和vc12三种编译版本的dll和lib文件,需要VS2010及以上的IDE版本,而没有我们常用的VS2008版本. 于是,需要 ...

  7. 记录下DynamicXml和HtmlDocument 使用方式

    之前解析都是XmlDocument.Load 而现在可以利用DynamicXml生成Dynamic对象实现强类型操作,很好用. /// <summary> /// 根据Xml路径动态解析成 ...

  8. 在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)

    一.环境部署 1.下载安装包: wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.xz 2.解压并进入目录: xz -d no ...

  9. 延迟是AR/VR体验的基础

    原文: http://blogs.valvesoftware.com/abrash/latency-the-sine-qua-non-of-ar-and-vr/ 译者注: 原文发表于2012年, 尽管 ...

  10. oracle扩展dblink数。

    [标记]在进行数据迁移时:出现 Compilation errors for PROCEDURE ZDGAME.GFF_FETCH_MZR_LOG Error: ORA-04052: error oc ...