• AsyncTask和Handler的优缺点


    二者的区别我就不多说了,两个东西共同点都是为了解决耗时操作的问题,主要区别在于一个流程完善,拿来就用,一个偏向自主定制,扩展性高。

    这里面有个谁是轻量级,谁适合大任务的问题:http://blog.sina.com.cn/s/blog_8417aea80100t6y2.html

    注意:按照Android官方文档支出,AsyncTask被推荐为处理短时间(10秒以内)的操作,即本地的轻量IO操作.不适合使用网络这样时间不定的操作.

    • 问题:有人说异步任务比Handler轻量级,对吗?
    • 答:通过看源码,发现AsyncTask实际上就是一个线程池,而网上的说法是AsyncTask比handler要轻量级,显然上不准确的,只能这样说,AsyncTask在代码上比handler要轻量级别,而实际上要比handler更耗资源,因为AsyncTask底层是一个线程池!而Handler仅仅就是发送了一个消息队列,连线程都没有开。
    • 但是,如果异步任务的数据特别庞大,AsyncTask这种线程池结构的优势就体现出来了。

    下面是我转载的一个面试题,原文来自:http://www.2cto.com/kf/201309/247517.html

    AsyncTask实现的原理,和适用的优缺点

    AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
    使用的优点:
    l  简单,快捷
    l  过程可控
           
    使用的缺点:
    l 在使用多个异步操作的同时,共同进行Ui变更时,就变得复杂起来.
    l 最大并发数不超过5
     
    2 )Handler异步实现的原理和适用的优缺点
    在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)àthread(子线程)运行并生成Message-àLooper获取Message并传递给HandleràHandler逐个获取Looper中的Message,并进行UI变更。
    使用的优点:
    l  结构清晰,功能定义明确
    l  对于多个后台任务时,简单,清晰
       
    使用的缺点:
    l  在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
  • 相关阅读:
    01 Vue的起步和插值表达式
    06 扩展的对象的功能
    05 解构赋值
    04 函数之扩展运算符、箭头函数
    03 函数之默认值、剩余参数
    02 模板字符串
    01 let和const命令
    28 Bootstrap排版
    27 Bootstrap的列偏移
    26 Bootstrap的栅格系统
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3884711.html
Copyright © 2020-2023  润新知