异步数据处理Handler

在单线程的程序当中,主线程在处理大数据或者访问网络资源,UI主线程往往会卡住,出现点不动的现象(UI线程被阻塞),这种情况下,一般 会用多线程来处事,单独开一个子线程进行数据处理,这就会遇到一个问题,子线程更新的数据如何反映到UI主线程中,这就要用到Handler,它的主要功 能是接受子线程发送的数据, 并用此数据配合主线程更新UI。具体用法也蛮简单:

1. 在子线程串发送message

Message msg = new Message();
Bundle b = new Bundle();// 存放数据
b.putString(“color”, “我的”);
msg.setData(b);
MainActivity.this.myHandler.sendMessage(msg);

2. Handler中的handleMessage接收消息,并把接收中包含的数据更新至ui界面中国

super.handleMessage(msg);
Bundle b = msg.getData();
String color = b.getString(“color”);
MainActivity.this.buttonStart.append(color);

时间: 2024-10-27 17:51:48

异步数据处理Handler的相关文章

深入探讨Android异步精髓Handler

深入探讨Android异步精髓Handler 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Dra

Android异步消息处理 Handler Looper Message关系源码分析

# 标签: 读博客 对于Handler Looper Message 之前一直只是知道理论,知其然不知所以然,看了hongyang大神的源码分析,写个总结帖. 一.概念.. Handler . Looper .Message 这三者都与Android异步消息处理线程相关的概念. 异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数,执行完成一个消息后则继续循环.若消息队列为空,线程则会阻塞等待. 说了这一堆,那么和Handle

多线程异步机制Handler以及AsyncTask

Android当中多线程的写法跟JAVA当中相差不了太多,只需要新建一个类继承自Thread类即可.然后重写父类的run方法.并在里面写耗时逻辑即可 class MyThread extends Thread { @Override public void run() { // 处理具体的逻辑 } } 启动线程 new MyThread().start(); 当然也可以像下面这样写,这样的写法更加适合,因为使用继承的方式耦合性有点高 class MyThread implements Runna

Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验

在简易音乐播放器中,用了Handler,也没有过多地去研究学习,这里再学习下android下的异步消息处理机制.这里用了Handler主要是在线程中不能更新UI,而需要通过Handler才可以.关于异步消息处理有几个概念. 1.Message:消息,线程间通讯的数据单元.例如后台要下载歌曲然后下载完成要更新ui,则可以发送一条包含更新信息的Message给UI线程. 2.MessageQueue:消息队列,用来存放所有通过Handler发布的消息,因为是队列,所以是先进先出的. 3.Handle

Boost-IO学习 异步数据处理Simple(转)

为了防止自己忘记,而记在这里的... #include <boost\asio.hpp> #include <iostream> using namespace std; void handler(const boost::system::error_code &ec) { cout << "5s" << endl; } void handler2(const boost::system::error_code &ec)

C#异步数据处理-WorkQueue

介绍 工作队列主要用于异步处理消息,详细介绍参考其他文章,这里主要提供使用方法 类似方法有List.HashMap.Dir,但是性能略逊一筹. 场景举例 硅晶片标刻: 通讯协议采用TCP协议 1.程序(Server)对接上游LAMA机器(Client),接受标刻条码信息. 2.程序(Client)控制激光打标机(Server),在硅晶片上标刻条码 3.程序(Client)读取扫码器(Server)读码信息,并于标刻条码信息对比 简单调用举例 struct recivecode { public

安卓异步任务AsynTask(1)

1.AsynTask类结构asysTask类主要用到的几个内部回调函数有:doInBackGround() onPreExecute() onPostExecute() onProgressUpdate()复制代码正是这几个回调函数构成了AsynTask类的使用逻辑结构.注意:每个AsynTask子类必须至少复写doInBackGround()方法.2.回调逻辑关系调用关系如下图:    1>主线程调用AsynTask子类实例的execute()方法后,首先会调用onPreExecute()方法

android异步任务图片下载(进度条提示进度)

一.AsyncTask介绍 Android提供了几种在其他线程中访问UI线程的方法. Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Hanlder 这些类或方法同样会使你的代码很复杂很难理解.然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕. 为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界

android异步任务详解 AsynTask

android提供了一套专门用于异步处理的类.即:AynsTask类.使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回. 其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法.编程时,两者都可以实现同样的功能.本文后面将对AsynTask和Thread进行比较. 1.AsynTask类结构 asysTask类主要用到的几个内部回调函数有: doInBackGround() onPreExecute() onPostExecute() onProgressUp