您的位置:首页 > 移动开发 > Android开发

安卓学习-AsyncTask

2016-07-29 23:43 323 查看
#异步加载
    原因 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.处理简单的数据可以使用,复杂的还是使用多线程|线程池。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android AsyncTask