首页
学习
活动
专区
圈层
工具
发布

使用AsyncTask异步更新UI界面及原理分析

,从而实现UI界面的更新。...AsyncTask抽象出后台线程运行的五个状态,分别是:1、准备运行,2、正在后台运行,3、进度更新,4、完成后台任务,5、取消任务,对于这五个阶段,AsyncTask提供了五个回调函数: 1、准备运行...这些值将会在onProgressUpdate(Progress...)中被发布到UI线程。 3. 进度更新:onProgressUpdate(Progress...)...AsyncTask并不总是需要使用上面的全部3种类型。标识不使用的类型很简单,只需要使用Void类型即可。 例子:从网络上下载图片,下载完成后在UI界面上显示出来,并会模拟下载进度更新。...前面我们说到,当任务的状态发生改变时(1、执行成功2、取消执行3、进度更新),工作线程会向UI线程的Handler传递消息,Handler要处理其他线程传递过来的消息。

1.7K110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android Handler更新UI

    android中经常需要更新界面某个元素的值,但是在主线程中是不可以直接更新主线程的值。这里推荐通过handler机制来更新值。...一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.          ...解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button...这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的....子线程用sedMessage()方法传弟)Message对象,(里面包含数据)  , 把这些消息放入主线程队列中,配合主线程进行更新UI。

    1.8K70

    线程与更新UI,细谈原理

    进入正题,大家应该都听过这样一句话——“UI更新要在主线程,子线程更新UI会崩溃”。久而久之就感觉这是个真理,甚至被认为是“官方结论”。 但是如果问你,官方什么时候在哪里说过这句话,你会不会有点懵。...废话有点多了,今天还是通过实践案例,看看这个关于线程和UI更新的 “官方结论” 正确吗?...Button的宽度为固定不崩溃。...检查线程,其实就是检查更新UI操作的当前线程是不是当初创建UI的那个线程,这样就保证了线程安全,因为UI控件本身不是线程安全的,但是加锁又显得太重,会降低View加载效率,毕竟是跟交互相关的。...总结 任何线程都可以更新UI,也都有更新UI导致崩溃的可能。

    1.1K20

    异步处理中使用AsyncTask踩过的坑Android应用界面开发

    Android应用界面开发 第三章学习 第三部分#### ---- 异步处理中使用AsyncTask踩过的坑#### AsyncTask是Android提供的工具之一,可以简单方便地用于子线程更新UI...任务一旦完成就可以通过 return 语句来将任务的执行结果返回,如果 AsyncTask的第三个泛型参数指定的是 Void,就可以不返回任务执行结果。...在这个方法中可以对 UI 进行操作,利用参数中的数值就可以对界面元素进行相应地更新。...---- 网上找啊找,关于AsyncTask的范例全都写得一模一样,只有更新seekbar等一个UI的。思考了一夜,第二天………… ?...原来,AsyncTask中间这泛型,其实能支持的类型有限吧!(我猜的!),给他2个参数时,运行一次就FINISHED了。所以,需要更新多个UI时候,使用AsyncTask还是得多考虑考虑。 --完--

    1K10

    AsyncTask和Handler对比

    UI进度更新),最后反馈执行的结果给UI主线程....首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。...使用过AsyncTask 的同学都知道一个异步加载数据最少要重写以下这两个方法: doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。...在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。...中的第一个参数 * 这里的String返回值对应AsyncTask的第三个参数 * 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI当中的空间进行设置和修改

    1.5K50

    Android之AsyncTask类介绍

    一种经典的使用场景是:在新线程中进行耗时操作,当任务完成后通过Handler向主线程发送Message,这样主线程的Handler在收到该Message之后就可以进行更新UI的操作。...Android之所以提供AsyncTask这个类,就是为了方便我们在后台线程中执行操作,然后将结果发送给主线程,从而在主线程中进行UI更新等操作。...如果AsyncTask的第三个泛型参数指定的是Void,就可以不返回任务执行结果。...注意,在这个方法中是不可以进行UI操作的,如果需要更新UI元素,比如说反馈当前任务的执行进度,可以调用publishProgress方法来完成。...在这个方法中可以对UI进行操作,在主线程中进行,利用参数中的数值就可以对界面元素进行相应的更新。

    70920

    笔记16 | 解析和练习AsyncTask

    前言 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务的类:AsyncTask,我们一般是 继承AsyncTask,然后在类中实现异步操作,然后将异步执行的进度,反馈给UI主线程...的AsyncTask,我们可以自己开辟一个线程,完成相关操作后,通过下述两种方法进行UI更新: 前面我们学的Handler,我们在Handler里写好UI更新,然后通过sendMessage()等的方法通知...UI 更新,另外别忘了Handler写在主线程和子线程中的区别哦~ 利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,更新UI时,把Runnable...我们可以用上述两种方法来完成我们的异步操作,加入要我们写的异步操作比较多,或者较为繁琐, 难道我们new Thread()然后用上述方法通知UI更新么?...seekBar) { super(); this.txt=txt; this.seekBar=seekBar; } //该方法不运行在

    74860

    2016级移动应用开发在线测试11-线程

    15秒内未响应用户的输入事件(如按键或者触摸),BroadcastReceiver未在30秒内完成相关的处理 ()当需要在Android程序中运行比较耗时的操作时,如网络请求,大文件I/O等,为了不阻塞主线程...()如果Activity的线程或组件把自身的消息放入Activity的主线程消息队列,那么这些消息就回在主线程中被统一处理,而主线程一般负责界面的更新,因此这种方式可以较好地实现Android界面的更新...AysncTask是Android提供的轻量级异步任务类,能够较容易地实现UI线程的更新。...,onProgressUpdate(Progress...)这四个方法    ()AysncTask的异步任务在后台线程中运行,AsyncTask提供的接口既可以传递当前异步执行的进度信息,实现UI界面的更新...()AsyncTask类的实例必须在UI线程中创建,即在主线程中创建;execute(Params...)方法必须在UI线程中调用;AyncTask方法只能被执行一次,若多次调用将会抛出异常 8.

    1.1K10

    首页快照不更新么?投诉试试吧!

    博主纳闷了,虽然知道有自己的原因,但是我回到深圳之后,立即就恢复了更新频率及更新规律。为啥快照却没任何动静?...虽然,投诉中心收到的回复都是忽悠的套话,但是管你如何回复,咱们也只要见到效果就行,所以快照迟迟不更新的筒子们,赶紧去试试投诉吧! 产品管理员回复: 1.博客首页快照一直不更......网页 2014-02-25 已处理 详细说明: 博客更新频率一直很正常,一天一篇。但从 1 月 23 号开始,首页的百度快照就未更新过了。特来百度快照投诉,请求管理员解决。...## 另外提示您:本系统仅受理原网站删除或更新的投诉,原网站未变化的,建议您联系原网站删除原链接内容,百度系统会机器自动更新给予修正,或者按照“百度权利声明 http://www.baidu.com/duty...最后按国际惯例还是总结一下,个人补充的百度快照迟迟不更新的处理办法: 保持更新频率 尽量发原创文章 网站信息勿乱动(主副标题、描述以及关键字等) 检查是否存在死链 检查是否存在异常友链 期间不要使用外链工具

    2.6K150
    领券