博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于AsyncTask的一些总结
阅读量:6958 次
发布时间:2019-06-27

本文共 2263 字,大约阅读时间需要 7 分钟。

hot3.png

     //实现异步的内部类    /**     * 第一个参数:String      * 传入:在调用该类对象时传入的参数     * 如:MyTask myTask=new MyTask(Context) myTask.execute(string)     * 调用:doInBackground(String... strings)     * strings是这个参数,通常用strings[0]使用     *      * 第二个参数:Integer 更新进度的参数      * 传入:调用publishProgress(int);传入     * 调用:onProgressUpdate(Integer... values)调用     * values是这个参数,values[0]使用     *      * 第三个参数:外部线程doInBackground(String... strings)执行的结果,是        这个方法的返回值     * 传入:给doInBackground()设置的返回值就是这个参数     * 调用:onPostExecute(String s)调用     * s 是这个参数     */    class  MyTask  extends AsyncTask< String, Integer, String > {        private Context context;        ProgressDialog pdialog;        /**        构造方法        可以在这初始化一些变量        */        public MyTask(Context context){            this.context=context;        }        /**         该方法将在执行实际的后台操作前被UI thread调用。         可以在该方法中做一些准备工作,如在界面上显示一个进度条         */        protected void onPreExecute() {            pdialog=new  ProgressDialog(context, 0);            super.onPreExecute();        }        /**        该方法运行在后台线程中。        这里将主要负责执行那些很耗时的后台计算工作。        可以调用 publishProgress方法来更新实时的任务进度。        该方法是抽象方法,子类必须实现。        */        protected String doInBackground(String... strings) {            for(int i=0;i<100;i++){                try {                    //publishProgress这个方法                    //会获取实时进度传递给onProgressUpdate                    publishProgress(i);                    Thread.sleep(100);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }            return null;        }        /**        在publishProgress方法被调用后,        UI thread将调用这个方法从而在界面上展示任务的进展情况,        例如通过一个进度条进行展示。         */        protected   void  onProgressUpdate(Integer... values) {            pdialog.setProgress(values[0]);//在这里更新进度条        }       /**       在doInBackground 执行完成后,       onPostExecute 方法将被UI thread调用,       后台的计算结果将通过该方法传递到UI thread.       */        protected void onPostExecute(String s) {            //显示结果的地方            super.onPostExecute(s);        }    }

运行顺序:从上到下

onPreExecute() 

doInBackground(String... strings) 

onProgressUpdate(Integer... values) //在publishProgress方法被调用后才调用

onPostExecute(String s)

转载于:https://my.oschina.net/zhulunjun/blog/194057

你可能感兴趣的文章
Ka的回溯编程练习 Part2|八皇后问题和N皇后问题
查看>>
引入UEditor后其他列表项不显示
查看>>
《软件需求与分析》阅读笔记
查看>>
linux磁盘管理之df和du命令
查看>>
Xsell连接ubuntu
查看>>
python实现微信接口——itchat模块
查看>>
正则表达式
查看>>
android stuidio 导入项目问题。
查看>>
问题:计算foldRight(1)(_-_) 与foldLeft(1)(_-_)值不一样
查看>>
Pandas学习笔记,如何删除DataFrame中的一列(行)
查看>>
js基础
查看>>
安全实验室
查看>>
学习makefile(1)
查看>>
window.open的火狐、谷歌兼容写法
查看>>
Questions
查看>>
Linux 安装python3.7.3 提示已经自动安装了pip和setuptools 可是使用时bash提示没有找到pip...
查看>>
设计模式详细系列教程 (四) 无处不在的单例模式
查看>>
操作系统
查看>>
poj 2418 Hardwood Species
查看>>
2017-2018-2 20155225《网络对抗技术》实验五 MSF基础应用
查看>>