AsyncTask的使用以及Json解析

1、AsyncTask的使用

首先看一段代码:

public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> {  
    
    public ProgressBarAsyncTask() {  
        super();  
    }  
  
  
    /**  
     * 这里的Integer参数对应AsyncTask中的第一个参数,execute传进来的参数
     * 这里的String返回值对应AsyncTask的第三个参数  
     * 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI当中的空间进行设置和修改  
     * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作  
     */  
    @Override  
    protected String doInBackground(Integer... params) {  
    	
    	System.out.println("doinbackground::"+params[0]);
        //如果需要更新进度条,需要调用publishProgress(value);触发<pre name="code" class="java" style="font-size: 24px; ">onProgressUpdate对UI进行操作
return "doInBackGround返回值"; //返回的值对应onPostExecute的result
} /** * 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值) * 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置 */ @Override protected void onPostExecute(String result) {  

 
        System.out.println("异步操作执行结束" + result);  
    }  
  
  
    //该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置,在UI主线程中调用asyncTask.execute(params);触发异步任务,先执行onPreExecute();
    @Override  
    protected void onPreExecute() {  
        <pre name="code" class="java" style="font-size: 24px; "><span style="white-space:pre">	</span>System.out.println("开始执行异步线程");  
} /** * 这里的Intege参数对应AsyncTask中的第二个参数 * 在doInBackground方法当中,,每次调用publishProgress方法都会触发onProgressUpdate执行 * onProgressUpdate是在UI线程中执行,所有可以对UI空间进行操作 */ @Override protected void onProgressUpdate(Integer... values) {  
 
        int vlaue = values[0];  
        System.out.println("onProgressUpdate::"+vlaue);
        //可以这样更新进度条progressBar.setProgress(vlaue);
    }  
}  
AsyncTask中的doInBackground,onPostExecute,onPreExecute,onProgressUpdate方法都不可以直接调用,通过AsyncTask的execute(values);来触发。它们的执行顺序:execute(params) ---- onPreExecute() ---- doInBackground(params)[params对应execute传入的参数,返回值由onPostExecute接收,调用publishProgress(values)触发onPprogressUpdate(values)更新UI,两者values对应] ----onPostExecute(result)[结束,result对应doInBackground的返回值]


注意点:需要更新的UI可以通过构造方法传进来,务必记住不可以直接调用本身方法,和随便更新 UI,会造成UI堵塞



2、Json解析

使用Android中的JSONObject和JSONArray解析json数据

例子:

String strJson = "{\"students\":[{\"name\":\"Jack\",\"age\":12}, {\"name\":\"Vista\",\"age\":23}, {\"name\":\"Kaka\",\"age\":22}, {\"name\":\"Hony\",\"age\":31}]}";
        
try {
        JSONObject jo = new JSONObject(strJson);
        JSONArray jsonArray = (JSONArray) jo.get("students");
        for (int i = 0; i < jsonArray.length(); ++i) {
            JSONObject o = (JSONObject) jsonArray.get(i);
            System.out.println("name:" + o.getString("name") + "," + "age:" + o.getInt("age"));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值