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