异步任务AsyncTask

1.异步任务:使用子线程来执行耗时操作,然后再通过回调将结果返回给主线程

2.为什么用异步任务:
2.1)Android中使用线程的规则
a.主线程不能被阻塞,不能再主线程中执行耗时操作(不能超过5秒)
b.子线程不能访问UI控件
2.2)通过Handler线程通信机制,将子线程的数据传给主线程,在Android中已实现这种线程通信机制的类是AsyncTask,在AsyncTask类中通过接口回调,实现子线程与主线程之间的通信。

3.如何使用AsyncTask
3.1 创建类,并继承AsyncTask,同时声明三个泛型(Params,Progress,Result)
3.2 重写核心的两个方法:
Result doInBackground(Params…param);–>子线程执行的方法
void onPostExecute(Result result);–>主线程执行的方法
3.3 在子线程中执行方法内实现耗时操作,并将结果返回
3.4 在主线程中执行的方法内 将结果显示到UI上
3.5 在主线程中创建自定义的任务对象,并执行对象的execute()方法,启动任务

/**
 * 自定义异步任务
 * 三个泛型:
 *  1.第一个泛型:Params 启动任务执行的输入参数,比如HTTP请求的URL。
 *  2.第二个泛型:Progress 后台任务执行的百分比。
 *  3.第三个泛型:Result 后台执行任务最终返回的结果,比如String。
 *
 */
public class AsyncTaskStudy extends AsyncTask<String, Void, byte[]>{

    @Override
    protected byte[] doInBackground(String... params) {
        // TODO 在子线程中执行的方法--完成指定的耗时任务
        return null;
    }

    @Override
    protected void onPostExecute(byte[] result) {
        // TODO 在主线程中执行--方法的参数是子线程完成的结果(就是doInBackground完成后调用onPostExecute)
        super.onPostExecute(result);
    }


}
阅读更多
文章标签: 异步 android asynctask
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

异步任务AsyncTask

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭