zoukankan      html  css  js  c++  java
  • Android中AsyncTask使用

    一、AsyncTask的定义

    AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程,并在主线程更新UI。

    从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以很方便执行后台任务以及在主线程中访问UI。

    AsyncTask是一个抽象的泛型类,它提供了Params、Progress和Result这三个泛型参数

    public abstract class AsyncTask<Params,Progress,Result>

    AsyncTask三个泛型参数:

    》Params,任务的输入参数类型;

    》Progress,任务执行进度的参数类型。

    》Result,任务返回结果的参数类型。

    如果AsyncTask确实不需要传递具体的参数,那么这三个泛型参数可以用Void来代替。

    二、AsyncTask的4个核心方法:

    1、onPreExecute()

    在任务开始后立即调用,在UI线程执行。这一步通常用于设置任务,例如在用户界面中初始化进度条。


    2、doInBackground(Params...)

    在后台线程池中执行,可能会花费很长时间;可以通过publishProgress方法来更行任务的进度,publishProgress方法会调用onProgressUpdate方法;此方法还需要返回结果给onPostExecute方法。


    3、onProgressUpdate(Progress...)

    在UI线程上执行。这种方法是用来显示用户进度界面,后台进程仍在执行。例如,它可用于显示一个进度条或在文本中显示日志。


    4、onPostExecute(Result)

    在UI线程上执行。后台进程的结果被传递到这一步作为参数。

    常用的写法如下:

    class MyTask extends AsyncTask<String, Integer, String> {
    
        @Override
        protected String doInBackground(String... params) {
            //执行异步任务
            int n = 10;
            //调用publishProgress公布进度,最后onProgressUpdate方法将被执行
            publishProgress(n);  
            Thread.sleep(500);    
            return null;
        }
    
        @Override
        protected void onPostExecute(String result) {
            //更新UI,显示结果
        }
    
        @Override
        protected void onProgressUpdate(Integer... values) {
            //更新进度信息
        }

     任务调用的代码:

    new MyTask().execute();//执行任务

    三、AsyncTask的规则:

    1、AsyncTask实例必须在UI线程中创建。

    2、execute(Params... params)方法必须在UI线程中调用。

    3、不要手动调用onPreExecute,doInBackground,onProgressUpdate,onPostExecute这些方法

    4、一个AsyncTask实例只能执行一次(只能调用一次execute方法),如果执行第二次将会抛出异常

  • 相关阅读:
    【Linux】Gitlab库已损坏前端显示500错误解决方法
    【linux】gitlab 的安装以及数据迁移
    【PHP】图片转换为base64,经过post传输后‘+’会变成 ‘空格’
    【Mac】解决外接显示器时无法用键盘调节音量
    【Mac】 /usr/local 文件夹权限问题
    学妹问的Spring Bean常用配置,我用最通俗易懂的讲解让她学会了
    上海月薪 1w 和家乡月薪 5000 你选择哪?
    30岁码农的一次面试经历:不委屈自己
    写4条宝贵的经验,给初入职场的你
    Java 8 Optional 良心指南,建议收藏
  • 原文地址:https://www.cnblogs.com/pear-lemon/p/4831582.html
Copyright © 2011-2022 走看看