Android Handler 异步消息机制
来源:互联网 发布:总体国家安全观 知乎 编辑:程序博客网 时间:2024/04/28 23:58
Handler基本概念:
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。
Handler 常用方法:
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
Activity:
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。
Handler 常用方法:
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.
下面看一下具体代码是怎么实现的:
main.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:id="@+id/txtTest" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="HandlerTest" /> <Button android:id="@+id/btnTest" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试" /></LinearLayout>
Activity:
package com.droidstouc.handler.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/** * Android Handler 异步消息处理机制 * @author Administrator * */public class HandlerTestActivity extends Activity { private static final String TAG="HandlerTestActivity"; private Button btnTest; private TextView txtTest; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txtTest = (TextView) this.findViewById(R.id.txtTest); btnTest= (Button) this.findViewById(R.id.btnTest); //设置 OnClick ** btnTest.setOnClickListener(new BtnTestOnClickListener()); } //点击测试按钮后调用 BtnTestOnClickListener 的 OnClick 方法 class BtnTestOnClickListener implements OnClickListener { @Override public void onClick(View v) { /* //把线程对象放到handler的队列中,线程会马上启动执行 handler.post(thread);*/ //启动线程 thread.start(); try { // 为了看到异步效果,我让当前线程停止了2秒钟 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } Log.i(TAG, "OnClick........"); } } // 定义一个Handler,用来异步处理数据 Handler handler = new Handler() { //相当于jquery $.ajax方法中的 Success:function(){} public void handleMessage(android.os.Message msg) { // 对线程中 handler 返回的结果进行处理 Log.i(TAG, "结果返回,正在处理"); if(msg.what ==1) { txtTest.setText("异步处理结果 === Handler "); } }; }; Thread thread = new Thread() { public void run() { Log.i(TAG, "start Thread"); //发送一个空消息到消息队列里面 //此方法相当于后台往前台Ajax响应结果,在Java当中,相当于一个Action方法里面out.println(1); handler.sendEmptyMessage(1); }; };}
- Android Handler 异步消息机制
- Android Handler 异步消息机制
- Android Handler 异步消息机制
- Android Handler 异步消息机制
- Android Handler 异步消息机制
- Android Handler 异步消息机制
- Android异步消息处理机制 handler
- Android Handler 异步消息处理机制
- Android Handler异步消息机制详解
- 关于 Android 异步消息处理机制 Handler
- Android——Handler异步消息机制
- Android异步消息处理机制Handler
- Android基础:异步消息处理机制Handler
- Android异步消息处理机制之handler机制
- Android 异步消息机制 Handler Message Looper机制详解
- Android的异步消息处理机制---Handler机制总结
- Handler--异步消息处理机制
- 26、Android之Handler异步消息处理机制
- 数据大小超出此类型的最大值; 解决办法
- Java中的换行符
- S3C2440 UATR的学习
- zend framework 重定向方法(render, forward, redirect)总结
- 海量数据高性能分页
- Android Handler 异步消息机制
- 互联网骨干网
- 如何关闭windows 2003浏览网页时信任站点添加提示以及解决不能加入可信任的站点
- 基于Dojo的简单IDE编辑器----DOM浏览器上的实现
- Android用Application设置全局变量以及使用
- Android判断GPS、wifi、移动网络是否可用的探知函数
- 技术是软件测试人员的核心价值吗?
- LINUX下删除oracle软件和实例
- 写给15岁的女儿