关闭

异步任务AsyncTask

标签: 异步androidasynctask
65人阅读 评论(0) 收藏 举报

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);
    }


}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:228次
    • 积分:14
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章存档