当前课程知识点:Android应用开发基础 > 第六章 Android服务 > 6.4 多线程 > 6.4.4 实践案例-AsyncTask实现对话框下载
本节我们通过一个实例来介绍使用AsyncTask实现对话框下载
本章介绍DownloadAsyncTask实现对话框下载
点击开启同步任务 异步线程开启
点击开启进度框同步任务 弹出下载进度框
创建一个应用程序
依次选择“New” |“Module”
设置应用程序的名字为"asynctasktest"
视图的名字和布局的名字选择默认
进入res\layout\activity_main布局文件
修改布局类型为LineLayout线性布局
排列方式为垂直排列
删除TextView组件
新建Button组件,设置宽度为“match_parent”
设置高度为“wrap_content”
设置id为“btn_start_async”
内容为开启同步任务
复制button组件
粘贴2次
修改第二个button的id为“btn_start_download”
内容为开启进度框同步任务
修改第三个button的id为“btn_start_download2”
内容为开启下载任务
新建一个布局类型为LineLayout线性布局
设置宽度为“match_parent”
设置高度为“wrap_content”
设置高度为“wrap_content”
线性布局的排序方式orientation为horizontal
新建一个Button组件
设置宽度为“0dp”
设置高度为“60dp”
外边距为“30dp”
设置占比为“1”
id为“btn_btn_download_start”
导入按钮图片到drawable
设置按钮背景为“@drawable/download”
复制button组件
粘贴两次
更改第二个按钮id为“btn_download_pasue”
更改第三个按钮id为“btn_download_cancle”
更改第二个按钮背景为““@drawable/pause”
更改第三个按钮背景为““@drawable/cancle”
新建TextView组件,设置宽度为“match_parent”
设置宽度为“match_parent”
设置高度为“wrap_content”
设置id为“TextView”
设置外边距为“10dp”
设置内容为居中
内容为“下载进度:”
新建ProgressBar组件设置宽度为“match_parent”
设置宽度为“match_parent”
设置高度为“wrap_content”
设置id为“ProgressBar”
外边距为“10dp”
样式为“progressBarStyleHorizontal”
下面介绍主视图中的实现流程
进入MainActivity类
使用LayoutCreator插件对布局组件进行初始化
导入包
设置当点击开启同步任务按钮时
重写startAsync方法
右键依次选择New/JavaClass
新建一个名为“MyAsyncTask”的类
继承AsyncTask类
重写doInBackgroud对象
新建私有字符串strTAG
并初始化为“MyAsyncTask”
在doInBackgroud内使用log.d在启动时传入参数
使用publishprogress方法设置ui自动刷新
使用log.i打印标签
返回“over”
重写onPostExecute方法
并用log.i打印标签
重写onCancelled方法
并用log.i打印标签
重写onPostExecute方法
使用log.i打印doInbackground返回值
重写onProgressUpdate方法
并用log.i打印publishProgress返回值
回到MainActivity类
在startAsync方法内用logd打印标签
新建MyAsyncTask任务对象
使用execute方法执行MyAsyncTask类
当点击开启进度框同步任务按钮时
重写startDownloadAsyncTask方法
下面介绍DownloadAsyncTask下载类的实现流程
右键依次选择New/JavaClass
新建一个名为“DownloadAsyncTask”的类
继承AsyncTask父类
开始异步任务执行时传入的参数类型为void
异步任务执行中返回下载进度值的类型为Integer
任务执行完成后,返回的结果类型为boolean
重写doInBackground方法
新建一个私有的context类
新建一个私有的progressdialog类
新建一个私有的整型IPercebt
重写DownloadAsyncTask方法
调用父类中的无参构造
传入参数mCtx
重写onPreExecute方法
使用show方法启动ProgressDialog类
重写onPostExecute方法
使用dismiss方法是停止Progressdialog类
判断进度是否完成
如果已经完成提示下载完成
否则提示下载失败
重写onProgressUpdate方法
使用setMessage方法显示下载进度
重写onCancelled方法
设置传入参数为boolean类型的aBoolean
重写onCancelled方法
使用try方法
定义一个整型iDownLoadPercent,并初始化
重写getDownloadProgress方法
在getDownloadProgress方法内iPercebt递增
使用publishProgress方法刷新进度
当iDownloadpercent大于等于100时
跳出循环
设置线程休眠100毫秒
当值为true是执行
捕获异常
完成时返回true
异常时返回false
进入MainActivity
在startDownloadAsync方法中
定义DownLoadAsyncTask类
并初始化
使用execute方法启动DownloadAsycTask类
程序编写完成运行程序
点击开启同步任务,异步线程开启
这就是使用AsyncTask实现对话框下载的全部内容
请大家按照讲课的内容使用AsyncTask实现异步任务处理
在Android的模拟器和手机中分别运行
通过实例理解使用AsyncTask
与自定义服务的区别
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统