Android 4.0 后 貌似规定了 在主线程中不允许访问网络,在子线程中不允许修改UI. 否则会抛出NetworkOnMainThreadException 异常
解决办法: 采用继承 AsyncTask<String, String, String>
实现AsyncTask中定义的几个方法
onPreExecute()
doInBackground(Params...)
onProgressUpdate(Progress...)
onPostExecute(Result)
onCancelled()
注意:
Task的实例必须在UI 线程中创建
execute方法必须在UI 线程中调用
private class MyTask extends AsyncTask<String, Integer, String>
{ @Override
protected void onPreExecute() {
super.onPreExecute();
//界面提示
}
@Override
protected String doInBackground(String... para) {
//getWebService
//获取网络数据
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
//显示当前进度情况
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//更新UI
}
@Override
protected void onCancelled() {
super.onCancelled();
//用户取消
}
}