Android应用开发Android:AnsyncTask异步任务区别
白羽 2019-05-20 来源 :网络 阅读 446 评论 0

摘要:本文将带你了解Android应用开发Android:AnsyncTask异步任务区别,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android:AnsyncTask异步任务区别,希望本文对大家学Android有所帮助。


Android应用开发Android:AnsyncTask异步任务区别


 同步和异步的概念区别:
    同步,必须执行完成某个问题后才能继续执行其他的。
   
    异步,我会去先执行其他问题,你执行完之后返回给我一个结果就可以。
   
    android中为什么要引用异步任务呢
   
    android启动的,会启动一个线程也称为主线程,UI线程,但是我们不能把所有耗时的任务交给主线程来完成,这样会影响用户的体验,也就是说我们要另外的开辟新的线程来执行我们的任务,
   
      但是在android中,(加载图片,网络编程都属于耗时的操作),在android4.0后规定禁止在主线程中完成网络操作,所以说这些耗时的任务要交给子线程,
   
    问题,子线程中是不能进行ui操作的,只有作为主线程的ui线程才能够进行ui操作,那么我们怎么讲信息返回给用户呢。
   
    方式1.我们可以通过handler,在handler中写好了跟新的操作,在子线程中调用sendmessage通知我们的handler跟新ui
   
    方式2.利用Activity.runonUIThread(Runnable)进行子线程到ui线程的切换。
   
    为什么要是用AsyncTask?
   
    很简单,人都是很懒的,使用上述的两种方式操作麻烦,所以大佬们就封装了一个异步执行的方法,便于我们直接处理耗时逻辑,更新UI.
   
    我们一般用它完成网络操作,图片加载,数据传输等操作。(当然后续我们会选择我们的第三方的框架来完成)
   
    Asynctask的基本使用:
   
    首先它是一个抽象类,也就是说我们要重写他的方法然后在new
   
    AsyncTask
   
    parames:启动任务的时候执行的参数,比如传入的url
   
    Progress:后台执行进度的百分比单位
   
    result:执行完异步操作后返回的结果
   
    (与handler相比,他的后台是一个线程池,再数据庞大的时候回体现出优势)
   
    AsyncTask的几个重要的方法
   
    @Override
   
    protected void onPreExecute() {
   
    super.onPreExecute();
   
    }
   
    //执行耗时操作之前调用的一个方法,相当于我们的初始化的方法
   
    注意该该方法是运行在ui线程中的
   
    1
   
    2
   
    3
   
    4@Override
   
    protected String doInBackground(String... params) {
   
    return null;
   
    }
   
    该方负责执行我们耗时的业务逻辑操作,也就是说他是在子线程中运行的,如果想要更新ui怎么办
   
    调用的我们的publicProgress方法可以更新我们的ui,此方法是在子线程中运行的
   
    publishProgress(Object o);
   
    此方法表示更新我们的进度,可用于更新下载的进度条等。
   
    @Override
   
    protected void onProgressUpdate(Integer... values) {
   
    super.onProgressUpdate(values);
   
    }
   
    此方法是在主线程中执行的方法,一旦我们在耗时逻辑代码中调用了publicProgress就表示我们希望更新进度条。
   
    此时就会调用这个方法到ui线程跟新我们的进度条。
   
    注意:task实例必须在ui线程中创建 task.excute(初始参数比如url);
   
    我们无需手动的调用task中的方法
   
    task只能被执行一次
   
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程