AsyncTask的使用
AsyncTask的使用
八阿哥 发表于2年前
AsyncTask的使用
  • 发表于 2年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: android1.5提供了工具类AsyncTask,它使得创建异步任务非常的简单,不再需要编写任务线程和Handler实例即可完成异步任务;

一:原理

        android中实现异步任务机制的方式有Handler和AsyncTask两种方式;

        Handler处理模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例发送消息,完成UI界面的更新,这种方式对于整个过程的控制是相当精细的,但是同时代码很臃肿,在多个任务同时执行时,不易对线程进行精确的控制;

        为了简化操作,android1.5提供了工具类AsyncTask,它使得创建异步任务非常的简单,不再需要编写任务线程和Handler实例即可完成相同的任务;




二:介绍

        1》类的介绍

            public abstract class AsyncTask<Params, Progress, Result> {};

            参数一:启动任务执行的输入参数,也就是往doInBackground(Params... params)方法中传入的参数;

            参数二:后台任务执行的进度参数,也就是往onProgressUpdate(Progress... values)方法中传入的参数;

            参数三:后台任务的执行结果,也就是doInBackground(Params... params)方法的返回值类型,同时onPostExecute(Result result)方法的参数类型也是这个!

                ****开发中根据实际情况,如果没有被使用到的参数可以用java.lang.Void代替;


        2》方法介绍

            a:    execute(Params.. params)——执行异步任务,在这里传入的参数会传入到doInBackground(Params... params)中!!

            b:    onPreExecute()——在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记;

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

            d:    onProgressUpdate(Progress... values)——在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。 

           e:    onPostExecute(Result result)——后台操作结束时(doInBackGround()方法执行完毕),此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。


三:相关注意点

            1》异步任务的实例必须在UI线程中创建;

            2》excute(Params.....params)方法必须在UI线程中调用;

            3》不要手动调用onPreExecute(),doInBackground(Params... params),onProgressUpdate(Progress... values),onPostExecute(Result result)这几个方法;

            4》不能在doInBackground()方法中修改UI界面;

            5》一个任务实例只能被执行一次,如果执行多次会抛出异常;


            *****onPreExcute()——在UI线程中执行;

                    doInBackgroud()——在子线程中执行;

                    onPostExecute()——在UI线程中执行;

                    onProgressUpdate()——在UI线程中执行;




共有 人打赏支持
粉丝 3
博文 22
码字总数 6600
×
八阿哥
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: