简谈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();
            }
        });
    }
基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值