`
lynen
  • 浏览: 125446 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

AsyncTask解决Android UI堵塞问题

阅读更多

android.os.AsyncTask

三个泛型:

  Param ,任务执行器需要的数据类型

  Progress 后台计算中使用的进度单位数据类型

  Result 后台计算返回结果的数据类型

  有些参数是可以设置为不使用的,只要传递为Void型即可,比如AsyncTask

四个步骤:

  onPreExecute(),执行预处理,它运行于UI线程,可以为后台任务做一些准备工作,比如绘制一个进度条控件。

  doInBackground(Params...),后台进程执行的具体计算在这里实 现,doInBackground(Params...)是AsyncTask的关键,此方法必须重载。在这个方法内可以使用 publishProgress(Progress...)改变当前的进度值。

  onProgressUpdate(Progress...),运行于UI线程。如果在doInBackground(Params...)中 使用了publishProgress(Progress...),就会触发这个方法。在这里可以对进度条控件根据进度值做出具体的响应。

  onPostExecute(Result),运行于UI线程,可以对后台任务的结果做出处理,结果就是doInBackground(Params...)的返回值。此方法也要经常重载,如果Result为null表明后台任务没有完成(被取消或者出现异常)。

分享到:
评论

相关推荐

    Android异步任务之AsyncTask源码

    因为,UI线程主要是用来更新界面UI,如果一次进行太多的任务处理,并且这些任务需要相当的时间来完成,就会造成UI线程堵塞,结果可能是应用无响应(Android4.0以后,谷歌已经禁止在UI线程中进行“耗时操作”),这样的...

    android AsyncTask详细介绍

    AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: 简单,快捷 过程...

    异步线程AsyncTask

    首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...

    Android带进度条的下载图片示例(AsyncTask异步任务)

    在Android中只有在主线程才能对ui进行更新操作,而其它线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把所有的操作都放在主线程中操作 ,比如一些耗时操作。如果放在主线程中 会造成阻塞 而...

    Android AsyncTask 后监听异步加载完毕的动作详解

     当我们在加载一个列表的时候,比如GridView ,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread 、Timer 或者使用AsyncTask ,而这些操作都是在在后台另外开一个线程给我们找数据,具体得到的数据需要使用...

    Android AsyncTask实现异步处理任务的方法详解

    Android AsyncTask实现异步处理任务的方法详解 在开发Android应用时必须遵守单线程模型的原则:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。 Android 单线程模型概念详解://...

    深入了解Android中的AsyncTask

    AsyncTask,即异步任务,是Android给我们提供的一个处理异步任务的类。通过此类,可以实现UI线程和后台线程进行通讯,后台线程执行异步任务,并把结果返回给UI线程。 我们知道,Android中只有UI线程,也就是主线程才能进行...

    Android中AsyncTask的入门使用学习指南

    对于耗时的操作就需要放到子线程中操作,操作完成后需要通知UI线程进行更新等操作,这就需要Android的异步消息机制(创建一个Message对象,使用Handler发送出去,然后在Handler的handleMessage()方法中获得刚才发送...

    详解android异步更新UI的几种方法

    我们知道在Android开发中不能在非ui线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,...

    Android中AsyncTask与handler用法实例分析

    本文实例讲述了Android中AsyncTask与handler用法。分享给大家供大家参考,具体如下: 首先,我们得明确下一个概念,什么是UI线程。顾名思义,ui线程就是管理着用户界面的那个线程! android的ui线程操作并不是安全的...

    AsyncTask异步类下载图片案例

    因此其他阻塞 UI 线程的操作不应该在主线程中操作。为了避免 UI 线程失去响应的问题,An­droid 程序采用将耗时操作放在新线程中完成的方式,但是新线程可能需要动态更新 UI 组件,比如获取网络资源操作放在新线程中...

    asynctask的用法详解

    在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI工具包...

    android_loader_demo

    在Android3.0之前很多的应用都会遇到UI主线程阻塞的问题,也就是常说的ANR(Application Not Responding),其中占据最大就是数据加载这块。其实至今每个android程序员都意识到这个问题的存在,都会想各种方法去避开...

    Android 使用AsyncTask 后监听异步加载完毕的动作

    AsyncTask的使用方法网上有很多例子,使用起来也非常的方便。...场景模拟当我们在加载一个列表的时候,比如GridView,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread、Timer或者使用AsyncTask。

    浅谈Android 的线程和线程池的使用

    1、AsyncTask AsyncTask 是一种轻量级的异步任务类,可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新 UI, AsyncTask 是一个抽象的泛型类,提供了 Params(参数的类型)、...

    Android项目 Gallery实现异步加载网络图片 并只加载当前停止页面图.rar

    1. **异步加载**:利用Android的AsyncTask或Handler机制,实现图片的异步加载,避免阻塞UI线程,保证应用的流畅性。 2. **仅加载当前页图片**:通过监听Gallery的滚动事件,仅在用户停止滚动时加载当前页面的图片,...

    android 获取SDCARD 图片及视频并获取其缩略图

    1:获取sdcard 图片并以listview显示,并显示其缩略图 2:获取sdcard 视频并以listview显示,并...3:在显示其缩略图时通过asynctask 来显示,防止阻塞主ui 4: 获取的缩略图保存在缓存中,下次显示时直接从缓存中获取

    Android实现listview动态加载数据分页的两种方法

    并使用数据配合更新UI,AsyncTask是在一个线程中执行耗时操作然后把结果传给UI线程,不需要你亲自去管理线程和句柄。 一、使用Handler+线程方法 1、基础知识 Handler在android系统中,主要负责发送和接收消息,它的...

    android-tinyasync:Android 活动中半同步半异步方法的最小演示

    Android 开发者的一大绊脚石是 Activity 不允许被阻塞。 任何直接与服务器通信的应用程序都必须在单独的线程中执行此操作,通常使用 AsyncTask。 关于如何做到这一点有很多困惑,还有很多不同的方法。 一些开发人员...

    Android 单线程模型详解及实例

    Android 单线程模型详解及实例 我们今天将会在这篇文章中为大家详细介绍有关Android单线程模型的相关内容。希望初学者们可以通过本文介绍的内容对这一概念有一个充分的认识,并从中对这一系统有一个深刻的认识。 当...

Global site tag (gtag.js) - Google Analytics