




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 暂无系统分析师试题及答案
- 动态监控人员合同协议书
- 社会工作者网络支持系统试题及答案
- 掌握基础的系统分析师考试试题及答案
- 跨平台网络互通问题试题及答案
- 旅游策划岗面试题及答案
- 违约租房合同终止协议书
- 2025届高三化学一轮复习专题8第38讲晶体结构与性质练习含解析苏教版
- 讲解软件评测师必考试题及答案技巧
- 半圆形考试题及答案
- 中原乡镇樱桃沟乡村振兴景观概念性规划方案【乡村文旅】【乡村振兴】【乡村景观规划】
- 【9化 二模】河北邢台邯郸2025年5月中考二模九年级化学试卷
- 2025-2030年中国夜视摄像机行业市场现状供需分析及投资评估规划分析研究报告
- 2025年中考英语高频核心词汇背记手册
- 危大工程巡视检查记录表 (样表)附危大工程安全监管及检查要点
- 外墙铝板工程协议书
- 四川省2025届高三第二次联合测评-生物试卷+答案
- 2024年江苏省淮安市中考英语真题(原卷版)
- 广东省广州市黄埔区2021-2022学年七年级下学期期末英语试题(含答案)
- 河南省郑州市2025年高三第三次质量预测语文试题及参考答案
- 2025年熔化焊接与热切割作业中考试练习题(100题)附答案
评论
0/150
提交评论