博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ------ handler 异步处理消息
阅读量:5982 次
发布时间:2019-06-20

本文共 1884 字,大约阅读时间需要 6 分钟。

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,,,,");    }                }

 

 

转载于:https://www.cnblogs.com/wblyuyang/p/3996068.html

你可能感兴趣的文章
http://miicaa.yopwork.com/help/overall/
查看>>
浅谈关于特征选择算法与Relief的实现
查看>>
mybatis-spring 项目简介
查看>>
Wireshark抓取RTP包,还原语音
查看>>
Behavioral模式之Memento模式
查看>>
Work Management Service application in SharePoint 2016
查看>>
Dos 改动IP 地址
查看>>
Laravel 源码解读:php artisan make:auth
查看>>
【转】ionic run android 成功launch success,但是genymotion虚拟机没有显示
查看>>
苹果在GitHub上正式开源iOS内核源码
查看>>
测试人员面临的测试挑战和必备技能
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
同事反馈环:为什么度量和会议还不够充分
查看>>
[转]十问 Linux 虚拟内存管理 (glibc)
查看>>
老司机带你深入浅出 Collection
查看>>
查询系统-vba
查看>>
[译]Spring Session 与 Spring Security
查看>>
python学习笔记(05)
查看>>
JAVA BIO 服务器与客户端实现示例
查看>>
《Cisco IPv6网络实现技术(修订版)》一2.6 配置练习:使用Cisco路由器配置一个IPv6网络...
查看>>