Android 异步加载

Android 4.0 后 貌似规定了 在主线程中不允许访问网络,在子线程中不允许修改UI. 否则会抛出NetworkOnMainThreadException 异常

解决办法: 采用继承 AsyncTask
实现AsyncTask中定义的几个方法

onPreExecute()

doInBackground(Params...)

onProgressUpdate(Progress...)

onPostExecute(Result)

onCancelled()

注意:

Task的实例必须在UI 线程中创建
 execute方法必须在UI 线程中调用

 

 1  private class MyTask extends AsyncTask
 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     }

 

转载于:https://www.cnblogs.com/Evelia/p/3531528.html

你可能感兴趣的:(Android 异步加载)