版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.4AnsyncTask异步类的功能与用法Android的UI线程主要负责处理用户的按键事件、触屏事件等。因此其他阻赛UI线程的操作不应该在主线程中操作。为了避免UI线程失去响应的问题,Android程序采用将耗时操作放在新线程中完成的方式,但是新线程可能需要动态更新UI组件,比如获取网络资源操作放在新线程中完成。但由于新线程不允许直接更新UI组件,为了解决这个问题,Android提供了异步任务(AsyncTask)的方式实现异步线程的操作。AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承时需要指定如下三个泛型参数:Params:启动任务执行的输入参数的类型。Progress:后台任务完成的进度值的类型。Result:后台任务执行完成以后返回结果的类型。使用AsyncTask的步骤如下:
创建AsyncTask的子类,并指定参数类型。如果某个参数不需要,则指定为Void类型。
实现AsyncTask的方法,如doInBackground(Params…):后台线程将要完成的功能,一般有获取网络资源等耗时性的操作;第二个方法是onPostExecute(Resultresult):在doInBackground()方法执行完以后,系统会自动调用onPostExecute()方法,并接受其返回值。这里一般负责更新UI线程等操作。调用AsyncTask子类的实例的execute(Params…params)方法执行耗时操作。AsyncTask类实现网络下载图片publicclassMainActivityextendsAppCompatActivity{privateImageViewmImageView=null;privateProgressBarmProgressBar=null;privateStringURLs="/nature/iclickart_8_1024/wallpapers/1280x1024/iclickart_nature_wallpaper_122414a.jpg";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//实例化控件this.mImageView=(ImageView)
findViewById(R.id.imageView1);this.mProgressBar=(ProgressBar)
findViewById(R.gressBar1);//实例化异步任务ImageDownloadTasktask=newImageDownloadTask();//执行异步任务
task.execute(URLs);}<ImageViewandroid:id="@+id/imageView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"/><ProgressBarandroid:id="@+id/progressBar1"android:visibility="gone"style="?android:attr/progressBarStyleLarge"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"/>1.布局2.MainActivity
classImageDownloadTaskextendsAsyncTask<String,Void,Bitmap>{@OverrideprotectedBitmapdoInBackground(String...params){Bitmapbitmap=null;//待返回的结果Stringurl=params[0];//获取URLURLConnectionconnection;//网络连接对象InputStreamis;//数据输入流try{connection=newURL(url).openConnection();is=connection.getInputStream();//获取输入流BufferedInputStreambuf=newBufferedInputStream(is);//解析输入流bitmap=BitmapFactory.decodeStream(buf);is.close();buf.close();}catch(MalformedURLExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}//返回给后面调用的方法returnbitmap;}
@OverrideprotectedvoidonPreExecute(){//显示等待圆环mProgressBar.setVisibility(View.VISIBLE);}@OverrideprotectedvoidonPostExecute(Bitmapresult){//下载完毕,隐藏等待圆环mProgressBar.setVisibility(View.GONE);mImageView.setImageBit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版美发培训学校师资聘用标准合同4篇
- 2025年度门面租赁合同电子版(含租金递增与调整机制)
- 2025年度签竞业协议打工人财产保全及职业规划合同
- 二零二五年度酒店前台员工权益保障与劳动合同
- 二零二五年度超市与物流公司货物扣点运输合同
- 2025年度复杂地质条件顶管施工安全协议书
- 2025年度住宅室内装修工程保修协议
- 2025年度签竞业协议打工人财产保全及心理支持合同
- 2025年度跆拳道青少年运动员培养合作协议
- 二零二五年度退休人员教育辅助教学劳务合同
- 2024年国家焊工职业技能理论考试题库(含答案)
- 特鲁索综合征
- 《向心力》 教学课件
- 结构力学数值方法:边界元法(BEM):边界元法的基本原理与步骤
- 2024年山东省泰安市高考语文一模试卷
- 北师大版物理九年级全一册课件
- 2024年第三师图木舒克市市场监督管理局招录2人《行政职业能力测验》高频考点、难点(含详细答案)
- RFJ 006-2021 RFP型人防过滤吸收器制造与验收规范(暂行)
- 盆腔炎教学查房课件
- 110kv各类型变压器的计算单
- 新概念英语课件NCE3-lesson15(共34张)
评论
0/150
提交评论