A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

41黑马币
如题求告知

最佳答案

查看完整内容

1.execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。 2.onPreExecute(),在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。 主线程 做准备工作,一般用来初始化控件 3.doInBackground(Params... params), 在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishPro ...

4 个回复

倒序浏览
1.execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。


2.onPreExecute(),在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。
主线程 做准备工作,一般用来初始化控件

3.doInBackground(Params... params),
在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。
子线程 耗时操作的

4.onProgressUpdate(Progress... values),在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。
执行在主线程,用于跟新进度的

5.onPostExecute(Result result),当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。
接收数据,接收子线程传过来的数据 主线程

注意事项
1.异步任务的实例必须在UI线程中创建。
2.execute(Params... params)方法必须在UI线程中调用。
3.不要手动调  用onPreExecute(),doInBackground(Params... params),onProgressUpdate(Progress... values),onPostExecute(Result result)这几个方法。
4.不能在doInBackground(Params... params)中更改UI组件的信息。
5.一个任务实例只能执行一次,如果执行第二次将会抛出异常。
回复 使用道具 举报
在使用的时候,有几点需要格外注意:
1.异步任务的实例必须在UI线程中创建。
2.execute(Params... params)方法必须在UI线程中调用。
3.不要手动调用onPreExecute(),doInBackground(Params... params),onProgressUpdate(Progress... values),onPostExecute(Result result)这几个方法。
4.不能在doInBackground(Params... params)中更改UI组件的信息。
5.一个任务实例只能执行一次,如果执行第二次将会抛出异常。
示例:
MyTask myTask = new MyTask();
//开始一个任务(注意:一个对象只能调用一次)
myTask.execute("woshiku");
//取消一个正在执行的任务,onCancelled方法将会被调用  
  mTask.cancel(true);
/* <String, Integer, String>第一个参数String接受用户输入的参数如"woshiku" 用于doInBackground(String... params)第二个参数Integer用于onProgressUpdate(Integer... progresses)第三个参数String用于返回结果onPostExecute(String result)可以打印一下LOG然后对比一下

*/
class MyTask  extends AsyncTask<String, Integer, String>{
        //onPreExecute方法用于在执行后台任务前做一些UI操作  
        @Override  
        protected void onPreExecute() {  
            Log.i(TAG, "onPreExecute() called");  
        }  
        //doInBackground方法内部执行后台任务,不可在此方法内修改UI  
        @Override  
        protected String doInBackground(String... params) {  
            //打印出woshiku
            Log.i(TAG, "doInBackground(Params... params) called"+params[0]);
            for(int i=0;i<10;i++){
                //调用onProgressUpdate(Integer... progresses)
                publishProgress(i);
            }  
            return null;  
        }  
        //onProgressUpdate方法用于更新进度信息  
        @Override  
        protected void onProgressUpdate(Integer... progresses) {  
            Log.i(TAG, "onProgressUpdate(Progress... progresses) called"+progresses[0]);  
        }  
         
        //onPostExecute方法用于在执行完后台任务后更新UI,显示结果  
        @Override  
        protected void onPostExecute(String result) {  
            Log.i(TAG, "onPostExecute(Result result) called"+result);  
        }  
         
        //onCancelled方法用于在取消执行中的任务时更改UI  
        @Override  
        protected void onCancelled() {  
            Log.i(TAG, "onCancelled() called");  
        }  
}
回复 使用道具 举报
黑马币 还能负的  
厉害..
回复 使用道具 举报
liuch111 发表于 2015-8-27 20:13
黑马币 还能负的  
厉害..

你不说我都没发现
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马