Android自助餐之AsyncTask

Android自助餐之AsyncTask

[toc]

耗时操作可以使用AsyncTask

创建AsyncTask需要传递三个泛型:ParamsProgressResult

  1. Params启动任务执行的输入参数,比如HTTP请求的URL
  2. Progress后台任务执行的百分比
  3. Result后台执行任务最重返回的结果

使用AsyncTask需要重写的方法

  1. doInBackground()后台执行比较耗时的操作。

    不能直接操作UI;在执行过程中可以调用publishProgress()来更新任务的进度。

  2. doPlstExcute()相当于Handler处理UI的方式,可以再这里使用doInBackground方法的到的结果处理UI。

    在主线程执行。

  3. onProgressUpdate()可以使用进度条。

    在主线程执行。

  4. onPreExcute()在execute被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。

需要注意的

  1. AsyncTask的实例只能在UI线程中创建。
  2. execute()只能在UI线程中调用。
  3. 不要手动调用:onPreExecute()doInBackground()onProgressUpdate()onPostExecute()
  4. 一个AsyncTask实例只能执行一次。
时间: 2024-10-06 00:28:34

Android自助餐之AsyncTask的相关文章

android 异步任务AsyncTask

package com.example.ansyctest; import java.io.ByteArrayOutputStream; import java.io.InputStream; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl

Android笔记二十六.Android异步任务处理(AsyncTask)

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言 我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕绘图事件等,对于其他的操作尽量不要在UI线程中实现,因为这些操作很有可能会阻塞UI线程,比如一些耗时操作,会导致UI界面停止响应,从而降低了用户的体验.所以,为了避免UI线程失去响应的问题,Android建议将耗时操作放在新线程中完成,但新线程也可能需要动态更新UI组件:比如需要从网上获取一个网页,然后在Te

android异步类AsyncTask的简单使用

Android为了降低这个开发难度,提供了AsyncTask.AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务,更通俗地说就是一个执行后台任务的线程 而且他还会自动通知主线程更新UI 优点: 结构清晰,容易理解. 缺点 代码量稍大 下面直接看代码 1 private class AsyncLogin extends AsyncTask<Void,Integer,Boolean>{ 2 private EditText passwordEdit; 3 private EditT

Android 中的AsyncTask

在后台下载图片,下载完成后更新UI是一个很常见的需求.在没有AsyncTask类之前,我们需要写许多thread和Handler的代码去实现这个功能,有了AsyncTask,一切变得简单了.下面摘抄谷歌官方介绍: AsyncTask is designed to be a helper class around Thread and Handler and does not constitute a generic threading framework. AsyncTasks should i

Android备注26.Android异步任务(AsyncTask)

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言 我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕画图事件等,对于其它的操作尽量不要在UI线程中实现,由于这些操作非常有可能会堵塞UI线程,比方一些耗时操作,会导致UI界面停止响应,从而减少了用户的体验.所以,为了避免UI线程失去响应的问题,Android建议将耗时操作放在新线程中完毕.但新线程也可能须要动态更新UI组件:比方须要从网上获取一个网页,然后在T

android异步请求asyncTask使用—分析getResponseCode()阻塞

在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象,Android中可以使用AsyncTask和Handler两种异步方式来解决这种问题. AsyncTask(异步任务处理) 在使用AsyncTask时处理类需要继承AsyncTask,提供三个泛型参数,并且重载AsyncTask的四个方法(至少重载一个). An asynchronous task is defined by a computation t

Android自助餐之EventBus框架

Android自助餐之EventBus框架 Android自助餐之EventBus框架 下载完整源代码 配置buildgrandle 实例化EventBus 注册事件监听 定义被传递的事件类 发送事件 处理时间 下载完整源代码 配置build.grandle compile 'de.greenrobot:eventbus:2.4.0' 实例化EventBus eventBus=EventBus.builder().build(); 注册事件监听 eventBus.register(this);

【Android自助餐】Handler消息机制完全解析(二)MessageQueue的队列管理

Android自助餐Handler消息机制完全解析(二)MessageQueue的队列管理 Android自助餐Handler消息机制完全解析二MessageQueue的队列管理 添加到消息队列enqueueMessage 从队列取出消息next 第一段 第三段 第二段 从队列移除消息removeMessages 第一个while 第二个while 关于这个队列先说明一点,该队列的实现既非Collection的子类,亦非Map的子类,而是Message本身.因为Message本身就是链表节点(见

【Android自助餐】Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉

[Android自助餐]Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉 Android自助餐Handler消息机制完全解析一Message中obtain与recycle的来龙去脉 提供obtain 回收recycle 提供obtain() 在obtain的所有重载方法中,第一行都是Message m = obtain();,即调用空参的方法. 先来看一下这个空参方法 public static Message obtain() { synchr