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. linux 删除文件夹及其内容,显示文件路径

    比如要删除work文件夹包括里面的内容,则:rm -r /home/ftk/apache-tomcat-5.5.20/work,不管它是文件还是目录都删掉了 知道文件名 要查询文件大概地址用~cd ~ ...

  2. 转:windows 下 netsh 实现 端口映射(端口转发)

    本文转自:本文出自 “httpyuntianjxxll.spac..” 博客,请务必保留此出处http://333234.blog.51cto.com/323234/1135361 -----hapr ...

  3. 解决导入protobuf源代码Unity报错的问题

    将源代码导入Assets目录后, unity引擎会出现以下报错: 解决办法: 在 unity项目Assets目录中创建smcs.rsp文件,内容为-unsafe,其作用为可编译不安全代码.     然 ...

  4. ros论坛

    ros:http://ros.gaitech.net/forum.php makefile:http://blog.csdn.net/shallnet/article/details/38070745 ...

  5. Codeforces Round #277.5 (Div. 2)部分题解

    A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  6. Java精选笔记_集合【Map(映射)接口】

    Map(映射)接口 简介 该集合存储键值对,一对一对的往里存,并且键是唯一的.要保证map集合中键的唯一性. 从Map集合中访问元素时,只要指定了Key,就能找到对应的Value. 关键字是以后用于检 ...

  7. 九度 1534:数组中第K小的数字(二分法变形)

    题目描述: 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C.譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6].现在给你数组A和B,求 ...

  8. apache与weblogic 的整合

    web服务器与应用服务器的整合中,apache与weblogic 的整合算的上最普遍也是最基础的整合了 今天配置了一下: apache 2.0 weblogic 8.1 1.将weblogic中的mo ...

  9. git的常见问题

    今天把电脑清理了下再push就出问题了 ,报这个错Failed with error: fatal: unable to access 'https://git.oschina.net/dubo_/G ...

  10. js array.filter实例(数组去重)

    语法: 循环对数组中的元素调用callback函数, 如果返回true 保留,如果返回false 过滤掉,  返回新数组,老数组不变 var new_array = source_array.filt ...