AndroidAsyncTaskHandler更轻量级一些,适用于简单的异步处理。

Android开发中AsyncTask实现异步处理任务的方法,AndroidAsyncTask的用法实例,Android AsyncTask的使用。

首先明确Android之所以有HandlerAsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。

Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。不需要借助线程和Handler即可实现。

AsyncTask 的优势体现在:

•线程的开销较大,如果每个任务都要创建一个线程,那么应用程序的效率要低很多;

•线程无法管理,匿名线程创建并启动后就不受程序的控制了,如果有很多个请求发送,那么就会启动非常多的线程,系统将不堪重负。

•另外,前面已经看到,在新线程中更新UI还必须要引入handler,这让代码看上去非常臃肿。

AsyncTask定义了三种泛型类型 ParamsProgressResult

Params 启动任务执行的输入参数,比如HTTP请求的URL

Progress 后台任务执行的百分比。

Result 后台执行任务最终返回的结果,比如String

AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,开发者需要实现一个或几个方法。在任务的执行过程中,这些方法被自动调用。

onPreExecute(), 该方法将在执行实际的后台操作前被UI thread调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条。

doInBackground(Params...), 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。可以调用 publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。

onProgressUpdate(Progress...),publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。

onPostExecute(Result), doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread.

使用AsyncTask类,以下是几条必须遵守的准则:

1) Task的实例必须在UI thread中创建

2) execute方法必须在UI thread中调用

3) 不要手动的调用onPreExecute(), onPostExecute(Result)doInBackground(Params...), onProgressUpdate(Progress...)这几个方法

4) task只能被执行一次,否则多次调用时将会出现异常

更多相关文章

  1. Android——多线程
  2. Android SDK更新 Connection to http://dl-ssl.google.com refus
  3. RecyclerView 各种相关问题解决方法
  4. input系统一 loop线程的创建与运行
  5. Android基本控件常用属性及方法
  6. Android中一个Activity多个intent-filter的调用方法
  7. Android模拟SD卡实现方法解析
  8. Android编程实现屏幕自适应方向尺寸与分辨率的方法
  9. Android Studio导入Project的方法

随机推荐

  1. 【Android布局】在程序中设置android:gra
  2. Android更新Ui的几种方法和见解
  3. 自定义android开机动画
  4. android文字阴影效果
  5. Android(安卓)Studio --- > [学习笔记]Bu
  6. Android(安卓)Text控件之属性:android:tex
  7. android 布局
  8. android 控件-TextView用法整理
  9. 创建android文件系统(Root file system)
  10. 【Android】EditText标签调用键盘