Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。 Handler 常用方法:

post(Runnable)

postAtTime(Runnable,long)

postDelayed(Runnable long)

sendEmptyMessage(int)

sendMessage(Message)

sendMessageAtTime(Message,long)

sendMessageDelayed(Message,long)

以上post类方法允许你排列一个Runnable对象到主线程队列中, sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.

例子运行逻辑:

点击button --- > 启动一条新线程,用来处理数据 ---- >数据处理完毕,通过handler返回 ----- > handler里面接收返回的数据,进行UI更新等处理。

package com.example.handlertest;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView; public class MainActivity extends Activity { private TextView text; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); text = (TextView)findViewById(R.id.textView);
} //定义一个handler,用来异步处理数据
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
System.out.println("结果返回,正在处理...."); if (msg.what == 1) {
text.setText("异步处理结果是 === handler");
} };
}; //新开一条线程,用来异步处理数据,结果通过handler返回
Thread thread = new Thread(){
public void run() {
System.out.println("start thread,,,,"); handler.sendEmptyMessage(1);
};
}; //点击按钮
public void StartTest(View v){
thread.start(); try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("onClick,,,,");
} }

最新文章

  1. 外接Hdmi没有声音怎么设置
  2. [Erlang 0108] Elixir 入门
  3. IndexedDB参考资料网址
  4. 003. Asp.Net Routing与MVC 之一: 请求如何到达MVC
  5. C# 加密–RSA前端与后台的加密&解密
  6. 深入理解JavaScript定时机制和定时器注意问题
  7. 关于inf的问题
  8. webservice cxf error:org.apache.cxf.interceptor.Fault: Unmarshalling Error: 意外的元素 (uri:"", local:"ca
  9. spark中streamingContext的使用详解
  10. 自己动手实现简单的Vector
  11. datediff(),dateadd(),datepart().datename()时间处理函数
  12. 流畅的python学习笔记:第五章
  13. Hello vue.js的随笔记录
  14. Chapter 6 链表(上):如何实现LRU缓存淘汰算法?
  15. [转] Java基础知识——Java语言基础
  16. MySql5.5 SQL优化 慢查询日志存储
  17. java 构造器(constructor)
  18. c++ STL map 结构体
  19. 四、Mosquitto 高级应用之用户配置
  20. 从零开始学习Vue(一)

热门文章

  1. modelsim无法识别include文件的解决方法
  2. 转:Unknown module(s) in QT: multimedia
  3. WdatePicker日期控件的用法
  4. Winform 中DataGridView的checkbox列,当修改checkbox状态时实时获得其状态值
  5. jQuery实现折叠下拉效果
  6. SharePreference 工具类封装
  7. 金蝶EAS BOS上如何打补丁
  8. eclipse中安装adt插件
  9. SQL Server 集合处理
  10. 一起买Beta版本系列文档