AsyncTask

本文探讨了Android开发中AsyncTask与Thread的区别,并详细解释了何时使用它们。重点介绍了AsyncTask的实现要点,包括onPreExecute、doInBackground、onProgressUpdate及onPostExecute等关键方法。

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

我们要进行一个较为耗时操作的时候,一般是重新开启一个Thread或者AsyncTask来实现。那么这里就有一个问题,什么时候用Thread,什么时候用AsyncTask呢?首先,我们要明白他们之间的区别?

Thread,线程,我们要知道它有两个地方需要注意:①开销大,如果你的任务多,且都单独开线程来操作的话,效率低 ②匿名线程启动后不受程序控制 ③android的UI跟新需在UI线程里面,那么Thread必须配合Handler。

AsyncTask,它的特点是主要任务在其他线程运行,但它的回调时在主线程中执行。

那么这样我们就明白了,如果你需要的只是执行一个简单的数据库或者获取网页内容操作,用AsyncTask就可以了,当然,有时候也要具体情况具体分析,这就靠积累了。

我们来看看AsyncTask的实现要点:

①onPreExecute() 当任务执行之前开始调用此方法,可以在这里显示进度对话框之类的提示。

②String doInBackground(String... params) 此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间,这个期间可以调用publishProgress(int)[这个函数会调用onProgressUpdate]来跟新任务进度

③onProgressUpdate(Progress...) 此方法在主线程执行,用于显示任务执行的进度。

④onPostExecute(Result) 此方法在主线程执行,任务执行的结果作为此方法的参数返回

从上面的参数 我们可以看到AsyncTask定义了三种泛型类型 Params,Progress和Result。

* Params 启动任务执行的输入参数,比如HTTP请求的URL。//AsyncTask.execute(Params如String)传入的参数

* Progress 后台任务执行的百分比。//这个Progress 参数是publishProgress(int)设置的值
* Result 后台执行任务最终返回的结果,比如String。//这个Result参数是doInBackground函数的返回值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值