Android中AsyncTask的简单入手方式

本文详细介绍了AsyncTask类的使用方法,包括其三个泛型参数的意义、关键方法如doInBackground、onPostExecute的作用及如何启动和取消AsyncTask。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AsyncTask

方法介绍

            /**
             * 参数一: 当你的子线程启动时 需要什么资源? 
                参数二: 当你的子线程运行时 需要往UI线程 传递什么类型的参数
                参数三: 当你的子线程运行完毕, 需要给UI线程返回一个什么类型的结果
             */
            AsyncTask<Void, String, Void> task = new AsyncTask<Void, String, Void>(){

                /**
                 * UI线程方法 
                 * task 子线程启动之前 做的准备操作
                 */
                @Override
                protected void onPreExecute() {
                    // TODO Auto-generated method stub
                    super.onPreExecute();
                    but.setTextColor(Color.parseColor("#626262"));
                    but.setClickable(false);
                }


                /**
                 * doInBackground(Void... params)
                 * 子线程方法  用来执行耗时操作
                 * params 当你的task启动时 传递的参数
                 * return 当子线程死亡 也就是这个方法执行完毕 要返回给UI线程的参数
                 */
                @Override
                protected Void doInBackground(Void... params) {

                    for (int i = 60; i < 0; i--) {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //通知UI线程
                        publishProgress(i+"s");
                    }
                    //当子线程执行完毕 返回到UI线程
                    return null;
                }
                /**
                 * Ui线程中的方法, 可以直接更改UI线程
                 * 但是它如果想要被调用 必须在子线程中调用publishProgress()方法;
                 * 一般用于展示子线程任务执行的百分比 , 比如下载数据
                 */
                @Override
                protected void onProgressUpdate(String... values) {
                    // TODO Auto-generated method stub
                    super.onProgressUpdate(values);
                    but.setText(values[0]);
                }


                /**
                 * UI线程中的方法, 可以直接更改UI线程
                 * 当你的子线程死亡  也就是当doInBackground方法 return
                 * result: doInBackground方法return的参数
                 */
                @Override
                protected void onPostExecute(Void result) {
                    // TODO Auto-generated method stub
                    super.onPostExecute(result);
                    but.setClickable(true);
                    but.setTextColor(Color.parseColor("#000000"));
                    but.setText("获取验证");
                }

            };
            //启动
            task.execute();
取消一个操作
    方法如下
    task.cancel(true);
    一般用于Activity被销毁时 ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值