AsyncTask内的各个方法调用顺序

 最近因为项目比较轻松,所以学习下android,下面是根据网上的叙述,针对Async Task的一些总结

|- AsyncTask内的各个方法调用顺序:

|- 首先,用户调用execute方法,启动AsyncTask 。然后在execute方法中:
|- 首先调用onPreExecute方法,执行初始化操作。
|- 然后从线程池中取出若干个空闲的线程,并使用该线程调用doInBackground方法,执行耗时的操作,如文件下载等。
|- 提示:调用execute方法时设置的参数会被直接传递给doInBackground方法。
|- 当doInBackground方法执行完毕后,onPostExecute方法将被调用。onPostExecute方法的参数就是doInBackground方法的返回值。
|- 若doInBackground方法中途被终止,则同样会调用onPostExecute方法,但是方法的参数却为null 。
|- 若想更新UI控件,则可以在doInBackground方法中调用publishProgress方法向主线程中的Handler发送消息,Handler接到消息后会转调用onProgressUpdate方法来更新UI。
|- 提示:调用publishProgress方法时设置的参数将被传递给onProgressUpdate方法。
在上面的范例中,各个方法的参数、返回值都是Object类型的,这对于严格控制程序有很大负面的影响。但是事实上,AsyncTask类是有泛型的。
(重要:Note)
AsyncTask<Params, Progress, Result> 其中:
|- Params:用于设置execute和doInBackground方法的参数的数据类型。
|- Progress:用于设置onProgressUpdate和publishProgress方法的参数的数据类型。
|- Result:用于设置onPostExecute方法的参数的数据类型和doInBackground方法的返回值类型。

1------ execute(params)--->onPreExecute()------>result    doInBackground(params)-------->onPostExecute(result///null)
                        ----->publishProgress(Progress)---->mainUI Handler ---->onProgressUpdate(Progress

                        
子线程跟新UI                        
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            MyToast.show(AtoolsActivity.this, "短信还原成功");
        }
});
                                                            

                                   

                           

                  扩展阅读:

Android中AsyncTask的简单用法 


Android:异步调用详解


Android中的任务,进程,线程以及服务



Activity与Service是否处于同一进程? Service 的两大功能是什么?


                                

                                                                
                                                                
                                                                
                                                                
                                                               

你可能感兴趣的:(Android异步操作,AsyncTask调用顺序)