Android在4.0之前的版本 支持在主线程中访问网络,但是在4.0以后对这部分程序进行了优化,也就是说访问网络的代码不能写在主线程中了。
例如通过webservice 方式,给定url获取xml
错误类似;
此时将耗时操作置于子线程即可
class DownloadTask extends AsyncTask<Integer, Integer, String> {
// 后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型
@Override
protected void onPreExecute() {
// 第一个执行方法
super.onPreExecute();
}
@Override
protected String doInBackground(Integer... params) {
return HttpDownLoader.downLoadXML("url");
}
@Override
protected void onPostExecute(String result) {
// doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
// 这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
super.onPostExecute(result);
}
}