你的位置:首页 > 操作系统

[操作系统][android] 两种异步方式


使用AsyncTask开启子线程获取服务器数据,更新界面UI

 

  /**   * 异步任务   *   * @author taoshihan   *   */  public class HttpAsyncTask extends AsyncTask<String, Void, String> {    /**     * 在执行后台任务之前执行     */    @Override    protected void onPreExecute() {      String netInfo = NetUtils.getNetworkInfo(context);      if ("no".equals(netInfo)) {        Toast.makeText(context, "网络连接失败", 0).show();      } else if ("wifi".equals(netInfo)) {        Toast.makeText(context, "wifi连接", 0).show();      } else if ("mobile".equals(netInfo)) {        Toast.makeText(context, "手机流量连接", 0).show();      }    }    /**     * 后台运行,耗时的操作都放在这里,相当于Thread的run方法     */    @Override    protected String doInBackground(String... params) {      // TODO Auto-generated method stub      return null;    }    /**     * 在执行后台任务之后,可以在这更改UI界面,相当于Handler里面的处理方法     */    @Override    protected void onPostExecute(String result) {      // TODO Auto-generated method stub      super.onPostExecute(result);    }  }

 

 

 

使用Thread和Handler异步获取信息

 

  /**   * 使用线程和Handler   * @author taoshihan   *   */  public class HttpHandler extends Handler{    @Override    public void handleMessage(Message msg) {      //处理Message    }  }  public class HttpThread extends Thread{    @Override    public void run() {      //发送Message      new HttpHandler().sendMessage(new Message());    }  }

 

new HttpThread().start();new HttpAsyncTask().execute("htp://www.baidu.com");