消息handler message 线程通信 空消息


空消息的使用

private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//得到当前显示的数值
int number = Integer.parseInt(tv_demo_number.getText().toString());
switch (msg.what) {
case WHAT_INCREASE:
//限制number<=20
if(number==20) {
//设置暂停不能操作
btn_demo_pause.setEnabled(false);
Toast.makeText(HandlerDemoActivity.this, "已经达到最大值", 0).show();
return;
}
number++;
tv_demo_number.setText(number+"");
//发送增加的延迟消息
handler.sendEmptyMessageDelayed(WHAT_INCREASE, 1000);
break;
case WHAT_DECREASE:
//限制number>=1
if(number==1) {
//设置暂停不能操作
btn_demo_pause.setEnabled(false);
Toast.makeText(HandlerDemoActivity.this, "已经达到最小值", 0).show();
return;
}
number--;
tv_demo_number.setText(number+"");
//发送减少的延迟消息
handler.sendEmptyMessageDelayed(WHAT_DECREASE, 1000);
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handler_demo);
init();
}
private void init() {
tv_demo_number = (TextView) findViewById(R.id.tv_demo_number);
btn_demo_increase = (Button) findViewById(R.id.btn_demo_increase);
btn_demo_decrease = (Button) findViewById(R.id.btn_demo_decrease);
btn_demo_pause = (Button) findViewById(R.id.btn_demo_pause);
btn_demo_increase.setOnClickListener(this);
btn_demo_decrease.setOnClickListener(this);
btn_demo_pause.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v==btn_demo_increase) {//自动增加 what =1
//限制Button可操作性
btn_demo_increase.setEnabled(false);
btn_demo_decrease.setEnabled(true);
btn_demo_pause.setEnabled(true);
//停止减少(移除未处理的减少的消息)
handler.removeMessages(WHAT_DECREASE);
//发消息(增加)
handler.sendEmptyMessage(WHAT_INCREASE);
} else if(v==btn_demo_decrease) {//自动减少 what=2
//限制Button可操作性
btn_demo_increase.setEnabled(true);
btn_demo_decrease.setEnabled(false);
btn_demo_pause.setEnabled(true);
//停止增加(移除未处理的增加的消息)
handler.removeMessages(WHAT_INCREASE);
//发消息(减少)
handler.sendEmptyMessage(WHAT_DECREASE);
} else if(v==btn_demo_pause) {//暂停
//限制Button可操作性
btn_demo_increase.setEnabled(true);
btn_demo_decrease.setEnabled(true);
btn_demo_pause.setEnabled(false);
//停止增加/减少(移除未处理的减少/增加的消息)
handler.removeMessages(WHAT_INCREASE);
handler.removeMessages(WHAT_DECREASE);
}
}
消息handler message 线程通信 空消息的更多相关文章
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...
- Android - 消息机制与线程通信
以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...
- Handler实现线程间的通信1
通过Handler实现线程间的通信,在主线程当中实现Handler的handlerMessage()方法,在WorkerThread中通过Handler发送消息 Handler实现线程间的通信实例: ...
- android线程 Handler Message Queue AsyncTask线程模型 线程交互 + 修改Button样式 示例 最终easy整合版
首先原谅我把文章的标题写的这么长.其实我还嫌弃它短了因为 写不下去了所以我就不写了.因为我实在不知道该怎么定义这篇文章的标题或许应该叫 "乱谈"比较合适. 这样可能还体现了 ...
- WCF技术剖析之十七:消息(Message)详解(上篇)
原文:WCF技术剖析之十七:消息(Message)详解(上篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]消息交换 ...
- android 37 线程通信Looper
安卓程序的主线程也叫UI线程. 工作线程和主线程的差别:安卓主线程已经调用了Looper.prepare()方法了,已经有一个MessageQueue对象了,所以才可以在工作线程用Handler发消息 ...
- Android线程通信
摘要 andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传 ...
- 从Handler+Message+Looper源代码带你分析Android系统的消息处理机制
PS一句:不得不说CSDN同步做的非常烂.还得我花了近1个小时恢复这篇博客. 引言 [转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 作为A ...
- Handler 、 Looper 、Message异步消息处理线程机制( hander消息机制原理)
Handler . Looper .Message 这三者都与Android异步消息处理线程相关的概念. 那么什么叫异步消息处理线程呢? 异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次, ...
随机推荐
- 小程序-支持的最小像素px
经过我手机多次测试,支持的最小px为: 8px;
- 在线扩展根分区 red hat 4.8.3-9
跑程序的时候发现报错,提示空间不足,仔细查看后发现是根分区已满 27G的空间只有20k剩余 考虑从/data分区压缩一点空间到/分区 切换到root用户 执行下面的命令 1. umount /data ...
- [Python Cookbook] Numpy Array Joint Methods: Append, Extend & Concatenate
数组拼接方法一 思路:首先将数组转成列表,然后利用列表的拼接函数append().extend()等进行拼接处理,最后将列表转成数组. 示例1: import numpy as np a=np.arr ...
- 某考试 T3 sine
推完一波式子之后发现是个矩阵23333. 其实只要发现是矩阵之后就是个水题了. #include<bits/stdc++.h> #define ll long long using nam ...
- Java 获取当前时间及实现时间倒计时功能
引言 在一些项目中或是一些特殊的业务场景中,需要用到显示系统的当前时间,以及一些固定的时间倒计时,时间到后做一些什么事情的业务 .接下来咱们就具体看看代码是怎么实现的: <%@ page lan ...
- android 根据图片名字获取图片id
public int getResource(String imageName){ Context ctx=getBaseContext(); int resId = getResources().g ...
- Ubuntu+Apache+PHP+Mysql环境搭建(完整版)
Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里云服务器 二.Apache 1.安装Apache,安装命令:sudo apt-get ...
- Python 自动登录网站(处理Cookie)
http://digiter.iteye.com/blog/1300884 Python代码 def login(): cj = cookielib.CookieJar() ope ...
- iOS UI08_TableView界面传值
实现两个界面之间内容的传递 // // MainViewController.m // UI08_TableView界面传值 // // Created by dllo on 15/8/7. // C ...
- 如何下载合适自己系统环境的Xdebug
访问https://xdebug.org 在浏览器输入http://localhost/?phpinfo=1 (前提已经安装了wamp环境) Ctrl+a 全选 ,复制 粘贴到刚才的网站的 ...