Android 4.0 后 貌似规定了 在主线程中不允许访问网络,在子线程中不允许修改UI. 否则会抛出NetworkOnMainThreadException 异常
解决办法: 采用继承 AsyncTask<String, String,
String>
实现AsyncTask中定义的几个方法
onPreExecute()
doInBackground(Params...)
onProgressUpdate(Progress...)
onPostExecute(Result)
onCancelled()
注意:
Task的实例必须在UI 线程中创建
execute方法必须在UI
线程中调用
1 private class MyTask extends AsyncTask<String, Integer, String> 2 { 3 4 @Override 5 protected void onPreExecute() { 6 super.onPreExecute(); 7 //界面提示 8 } 9 @Override 10 protected String doInBackground(String... para) { 11 //getWebService 12 //获取网络数据 13 return null; 14 } 15 @Override 16 protected void onProgressUpdate(Integer... values) { 17 super.onProgressUpdate(values); 18 //显示当前进度情况 19 } 20 @Override 21 protected void onPostExecute(String result) { 22 super.onPostExecute(result); 23 //更新UI 24 } 25 @Override 26 protected void onCancelled() { 27 super.onCancelled(); 28 //用户取消 29 } 30 }