博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】Android的线程和线程池(AsyncTask)
阅读量:4357 次
发布时间:2019-06-07

本文共 810 字,大约阅读时间需要 2 分钟。

线程只要分为:主线程和子线程主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时的操作,由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时响应,因此耗时操作必须方法子线程中去执行.

AsyncTask
AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递到主线程并在主线程中更新UI.从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以更加方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合执行特别耗时的后台任务。AsyncTask是一个抽象的泛型类,所以如果我们想要使用它,就必须创建一个子类去继承它,在继承时我们可以为AsyncTask类指定三个泛型类。

1240

Params在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。

Progress后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位
Result当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。一个简单的自定义AsyncTask可以写成如下:

1240

AsyncTask的工作原理

为了分析AsyncTask的工作原理,我们从他的execute方法开始分析,execute()方法会调用executeOnExecutor方法

1240

从上面的代码中,sDefaultExecutor实际上是一个串行的线程池,一个进程中所有的AsyncTask全部在这个串行的线程中排队执行,这个排队执行的过程后面再进行分析。在executeOnExecutor方法中,AsyncTask的onpreExecute方法最先执行,然后线程池开始执行。

原文链接:

转载于:https://www.cnblogs.com/DaisyXuRan/p/5475485.html

你可能感兴趣的文章
windows下cocos2dx3.0开发环境及Android编译环境搭建
查看>>
BW连接数据库
查看>>
登录之后更新导航
查看>>
spring 的单例模式
查看>>
Python学习手册
查看>>
完整的系统帮助类Utils
查看>>
使用PowerShell批量注册DLL到GAC
查看>>
递归算法
查看>>
ubuntu 17.04 添加用户到sudo组
查看>>
Differences between page and segment
查看>>
Jdk与Tomcat配置与安装
查看>>
关于一个Java web与JFrame的深度结合
查看>>
VB连数据库conn.open的参数
查看>>
《信息安全系统设计基础》实验三
查看>>
SpringBoot Docs
查看>>
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>
859. Buddy Strings - LeetCode
查看>>
[置顶] 关键字弹出动画
查看>>