Android 异步加载

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     }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。