简谈AsyncTask

简谈AsyncTask

1.AsyncTask是什么

AsyncTask:是Android提供的轻量级的异步类,可以忽略Looper,MessageQueue,Handler等复杂对象,更便捷的完成异步耗时操作

2.AsyncTask怎么用

共分为两步,自定义AsyncTask,在耗时的地方调用自定义的AsyncTask
1.

class  DownloadTask extends AsyncTask<String,String,String>{
        @Override
        protected String doInBackground(String... strings) {
        //这里写耗时操作
            return null;
        }

2.

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //输出异常处理结果
    }

3.需要实现的几个方法分别是什么,有什么用

onPreExcute():在主线程中执行,在异步任务之前调用,系统最先调用此方法.可对控件进行初始化等操作

doInBackground():此方法运行在子线程中,比较耗时的操作放在此方法中执行

onProgressUpdate():此方法运行在主线程中,可以修改控件状态,获取任务的最新进度,触发此方法,需要在doInBackground中使用publishProgress方法

publishProgress:在doInBackground()中使用,用于触发onProgressUpdate()方法

onPostExcute():在异步任务执行完成后,系统会调用此方法,运行在主线程中,可以修改控件状态,用于接收异步任务的结果

4.什么是泛型参数

泛型参数就是可以接受任何形式的参数,不像int只能定义int类型的

什么是长度可变的参数列表

长度可变就是可以接收传过来多个参数,而不是像String str这种普通类型只能传一个
可变参数列表例如:String… str 接受传过来的多个参数返回的是一个数组,所以调用时需要像数组一样,如下面所示:values[0]

protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);
            textView.setText(values[0]);
        }

案例解析——倒计时Demo

布局文件简单就不发了,创建一个TextView和Button

java文件
创建了DownloadTask继承 AsyncTask

class  DownloadTask extends AsyncTask<String,String,String>{

        @Override
        protected String doInBackground(String... strings) {
            while (count>0){
                publishProgress(count+""                                                                                                   );
                count--;
                try {
                //每隔一秒刷新一次
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            //在倒计时完成后显示下载完成,可不写,直接返回null
            return "下载完成";
        }

        @Override
        protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);
            textView.setText(values[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            textView.setText(s);
        }
    }

count=10,模拟10秒倒计时

创建了DownloadTask文件后,在按钮button的单击事件中进行调用:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new DownloadTask().execute();
            }
        });
    }
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值