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. write solid code 零散(原文)

    整理下目录,看了这个文件,幸好未删除. 以下是<write solid code>中的原文摘录. 1.How could I have prevented this bug? 2.How ...

  2. Linux 快速删除大量小文件方法

    进行以下两步操作即可: 1.第一步:创建空的文件夹: mkdir  /tmp/blank 2.第二步:执行以下命令:rsync --delete-before -d /tmp/blank/ /home ...

  3. UVa 10450 - World Cup Noise

    题目:构造一个01串,使得当中的1不相邻,问长度为n的串有多少中. 分析:数学,递推数列. 设长度为n的串有n个.则有递推关系:f(n)= f(n-1)+ f(n-2): 长度为n的结束可能是0或者1 ...

  4. nohub和重定向文件

    1.如果使用远程连接的Linux的方式并想后台运行执行如下命令: 格式:nohup <程序名> & 比如:nohup /usr/local/collection/bin/start ...

  5. 【RF库Collections测试】Get Dictionary Items

    Name:Get Dictionary ItemsSource:Collections <test library>Arguments:[ dictionary ]Returns item ...

  6. hex()

    hex() 用于将十进制数字转换成十六进制 In [1]: hex(10) Out[1]: '0xa' In [2]: hex(11) Out[2]: '0xb'

  7. 关于ArrayList和List的区别

    ArrayList可以存放不同类型的数据,第一个可以是int,第二个可以是double等等 而List存放的是单一的数据类型的数据用法如下: List<GameObject> xx = n ...

  8. C语言近程型(near)和远程型(far)的区别是什么?

    DOS用一种分段结构来寻址计算机的内存,每一个物理存储位置都有一个可以用段一偏移量方式来访问的相关地址.例如,下面就是一个典型的段式地址:     A000:1234 冒号左边的部分代表段地址(A00 ...

  9. jquery单选框radio绑定click事件实现和是否选中的方法

    使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: 1. ...

  10. [译] 关于CSS中的float和position

    原文 http://learn.shayhowe.com/advanced-html-css/detailed-css-positioning 当构建页面排版时,有不同的方法可以使用.使用哪一种方法取 ...