安卓学习-AsyncTask

#异步加载
    原因 1.android单线程模型
         2.耗时操作阻碍UI线程
##实现方式
    多线程|线程池
    AsyncTask
##AsyncTask使用方式
    1.写一个类(例 MyAsyncTask)继承抽象类AsyncTask
    2.实现需要实现的方法
    3.调用方法执行任务,new MyAsyncTask().execute("");
##AsyncTask的泛型参数 AsyncTask<Params, Progress, Result>
    Params:启动任务时输入参数的类型
    Progress:后台执行任务中返回进度值的类型
    Result:后台执行任务完成后返回结果的类型
##构建AsyncTask子类的回调方法
    doInBackground:在子线程中执行的任务,必须重写的方法
    onPostExecute:在主线程中执行,任务执行完成后调用
    onPreExecute:在主线程中执行,完成执行异步任务前的初始化工作
    onProgressUpdate:在doInBackground()方法中调用 publishProgress()更新任务的执行进度后,就会触发该方法。
##AsyncTask中其他常用方法
    getStatus():得到任务执行的状态(未执行,执行中,执行完)
    cancel():只是发送一个取消任务的消息,但任务不会取消
    isCancelled():判断任务是否被取消,可以在回调方法中做出相应的操作
##优点
    易于使用(子线程和主线程切换),底层封装了handler和线程池
##缺点
    1.对于优先级不同的任务,不能按优先级执行
    2.如果同时给太多的任务去执行,队列会爆
    3.对于(<19)的版本上,最大线程数为128,占用资源较多
##注意事项
    1.每个AsyncTask对象只能被执行一次
    2.必须在UI线程中执行execute
    3.处理简单的数据可以使用,复杂的还是使用多线程|线程池。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值