android 关闭线程句柄,android进程与线程详解三:AsyncTask

这篇博客介绍了如何使用Android的AsyncTask类来实现后台任务与UI线程的分离,确保界面的安全性和代码的简洁性。通过doInBackground()在后台加载图片,并在onPostExecute()中更新ImageView。同时,提到了在处理活动重启(如屏幕方向改变)时如何避免任务被破坏以及正确取消任务的方法。

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

private class DownloadImageTask extends AsyncTask {

/** 系统把给予AsyncTask.execute() 的参数传给这个方法并且在后台线程中调用这个方法完成工作*/

protected Bitmap doInBackground(String... urls) {

return loadImageFromNetwork(urls[0]);

}

/** 系统把doInBackground()的执行结果传送过来并且在界面线程中调用这个方法执行任务 */

protected void onPostExecute(Bitmap result) {

mImageView.setImageBitmap(result);

}

}

现在界面变得安全并且代码变得简单了。因为把工作分成了在工作线程中完成的部分和在界面线程中完成的部分。

你应该阅读AsyncTask的参考来完全理解如何使用这个类。这里是一个对它如何工作的概览:

你可以使用范型指定参数的类型,进度值,和任务的最终值。

方法doInBackground()自动在工作线程中执行

onPreExecute(),onPostExecute(),和onProgressUpdate()都在界面线程中执行

doInBackground()返回的值被传递到onPostExecute()

你可以在任何时刻在doInBackground()中调用publishProgress()引起在界面线程中执行onProgressUpdate()

你可以在任意时刻在任何线程中取消任务

警告:另一个你在使用工作线程时可能遇到的问题是activity的意外重启(比如屏幕的方向变了),这可能销毁你的工作线程。要了解如何才能在此类现象发生时避免你的任务被杀以及如何在activity死亡时正确的取消你的任务,请参阅Shelves例子的源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值