Activity课件1第四章 Android事件处理(4.4 AsyncTask)_第1页
Activity课件1第四章 Android事件处理(4.4 AsyncTask)_第2页
Activity课件1第四章 Android事件处理(4.4 AsyncTask)_第3页
Activity课件1第四章 Android事件处理(4.4 AsyncTask)_第4页
Activity课件1第四章 Android事件处理(4.4 AsyncTask)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论