Demo演示

//通过Handler事件倒计时的一个操作,并判断状态

public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton,mButton2;
private final static int STATE_START = 100;
private final static int STATE_RUN = 101;
private final static int STATE_END = 102;
//创建Handler对象
private Handler mHandler = new Handler() {
public void handleMessage(Message msg){
switch (msg.what){
case STATE_START:
mTextView.setText("倒计时开始");
break;
case STATE_RUN:
mTextView.setText(String.valueOf(msg.arg1));
break;
case STATE_END:
mTextView.setText("倒计时结束");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.textview);
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyThread myThread = new MyThread(10);
myThread.start();
}
});
}
class MyThread extends Thread{
int startnum;
MyThread(int num){
startnum = num ; } @Override
public void run() {
super.run();
Message startMsg = mHandler.obtainMessage();
startMsg.what=STATE_START;
mHandler.sendMessage(startMsg);
while (startnum >=0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message runMsg = mHandler.obtainMessage();
runMsg.what =STATE_RUN;
runMsg.arg1 = startnum;
mHandler.sendMessage(runMsg);
startnum--; }
Message endMsg = mHandler.obtainMessage();
endMsg.what = STATE_END;
mHandler.sendMessage(endMsg);
}
}
} //演示post() postAtTime() postdelayed()
public class NextActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mTextView;
private Button button_post, button_postattime, button_postdelayed;
private Handler mHandler = new Handler(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
mTextView = (TextView) findViewById(R.id.textview_next);
button_post = (Button) findViewById(R.id.button_next_post);
button_postattime = (Button) findViewById(R.id.button_next_postattime);
button_postdelayed = (Button) findViewById(R.id.button_next_postdelayed);
button_postdelayed.setOnClickListener(this);
button_post.setOnClickListener(this);
button_postattime.setOnClickListener(this); } @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_next_post:
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("立即执行");
}
});
break;
case R.id.button_next_postattime:
mHandler.postAtTime(new Runnable() {
@Override
public void run() {
mTextView.setText("指定时间执行");
}
},android.os.SystemClock.uptimeMillis() +2000); //PostAtTime的时间使用的是uptimeMillis()不是currentTimeMillis()
break;
case R.id.button_next_postdelayed:
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mTextView.setText("延迟时间执行");
}
}, 2000);
break;
}
}
}

Handler(消息机制)的更多相关文章

  1. Android消息传递之Handler消息机制

    前言: 无论是现在所做的项目还是以前的项目中,都会遇见线程之间通信.组件之间通信,目前统一采用EventBus来做处理,在总结学习EventBus之前,觉得还是需要学习总结一下最初的实现方式,也算是不 ...

  2. Handler消息机制与Binder IPC机制完全解析

    1.Handler消息机制 序列 文章 0 Android消息机制-Handler(framework篇) 1 Android消息机制-Handler(native篇) 2 Android消息机制-H ...

  3. Handler消息机制实现更新主UI

    如下实现的是简单的更新主UI的方法,用Handler消息机制 将textview的内容每隔一秒实现num++ /* * handler消息机制 * asynctask异步任务 *  * httpcli ...

  4. Android Handler消息机制不完全解析

    1.Handler的作用 Android开发中,我们经常使用Handler进行页面的更新.例如我们需要在一个下载任务完成后,去更新我们的UI效果,因为AndroidUI操作不是线程安全的,也就意味着我 ...

  5. 源码篇——Handler消息机制

    Handler消息机制 Message 消息 Message.obtain() Message msg = new Message() Handler new Handler(){ handlerMe ...

  6. Handler消息机制的一些原理(直接用code讲解)——Android开发

    package com.example.handlertest; import android.os.Bundle; import android.os.Handler; import android ...

  7. Android Handler消息机制源码解析

    好记性不如烂笔头,今天来分析一下Handler的源码实现 Handler机制是Android系统的基础,是多线程之间切换的基础.下面我们分析一下Handler的源码实现. Handler消息机制有4个 ...

  8. 深入理解 Handler 消息机制

    记得很多年前的一次面试中,面试官问了这么一个问题,你在项目中一般如何实现线程切换? 他的本意应该是考察 RxJava 的使用,只是我的答案是 Handler,他也就没有再追问下去了.在早期 Andro ...

  9. 【Android】Handler消息机制

    Handler消息机制主要涉及Looper.Handler.MessageQueue.Message.其中,Looper主要负责获取消息,Handler负责发送消息及处理消息,MessageQueue ...

  10. handler消息机制入门

    handler消息机制入门 为什么要用handle? 我们在网络上读取图片信息时,是不能把耗时操作放在主线程里面的,当我们在子线程中获取到了图片的消息的时候,我们就需要把这个数据传给主线程. 而直接使 ...

随机推荐

  1. [转] This Android SDK requires Android Developer Toolkit version 23.0.0 or above

    问题描述: This Android SDK requires Android Developer Toolkit version 23.0.0 or above.  Current version ...

  2. GIT简单操作

    以下只是简单的bash的操作命令,个人比较喜欢用gui 打开 git bash here git clone https://github.com/自己的名字/trunk git checkout + ...

  3. 从inet_pton()看大小端字节序

    #include<stdio.h> #include<netinet/in.h> #include<stdlib.h> #include<string.h&g ...

  4. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  5. Linux 添加新硬盘 LVM操作(作用:新增硬盘的卷管理)

    1 查看当前系统硬盘及分区情况 (注:linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2 初始化分区sdb为物理卷pv pvcreate /dev/sdb  / ...

  6. 解决【无法启动此程序,因为计算机中丢失MSVCP71.dll。尝试重新安装该程序以解决此问题】问题

    今日电脑偶然出现:[无法启动此程序,因为计算机中丢失MSVCP71.dll.尝试重新安装该程序以解决此问题.]的不断地弹窗报错. 在网上查找了好久,也没有找到解决办法,就在我将要准备重装系统的时候,又 ...

  7. C#复制、粘贴文本信息到剪贴板

    复制:private void button1_Click(object sender, System.EventArgs e) { // Takes the selected text from a ...

  8. web前端开发学习:jQuery的原型中的init

    web前端开发学习:jQuery的原型中的init 有大量web前端开发工具及学习资料,可以搜群[ web前端学习部落22群 ]进行下载,遇到学习问题也可以问群内专家以及课程老师哟 jQuery.fn ...

  9. 图像特征提取之LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...

  10. python中统计列表各个元素的个数