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. Effective C++ -----条款11: 在operator=中处理“自我赋值”

    确保当对象自我赋值时operator=有良好行为.其中技术包括比较“来源 对象”和“目标对象”的地址.精心周到的语句顺序.以及copy-and-swap. 确定任何函数如果操作一个以上的对象,而其中多 ...

  2. nyoj130 相同的雪花

    相同的雪花 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 You may have heard that no two snowflakes are alike. ...

  3. 【leetcode】Search in Rotated Sorted Array II(middle)☆

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  4. 【EM】代码理解

    本来想自己写一个EM算法的,但是操作没两步就进行不下去了.对那些数学公式着实不懂.只好从网上找找代码,看看别人是怎么做的. 代码:来自http://blog.sina.com.cn/s/blog_98 ...

  5. 【python】f.write()写入中文出错解决办法

    一个出错的例子 #coding:utf-8 s = u'中文' f = open("test.txt","w") f.write(s) f.close() 原因 ...

  6. 如何:使用PicturBox实现类似淘宝网站图片的局部放大功能

    转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011822113131823/ 概要: 本文将讲述如何使用PictureBox控件 ...

  7. PHP安全编程:不要让不相关的人看到报错信息

    没有不会犯错的开发者,PHP的错误报告功 能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了.不能让大众看到报错信息,这一点很重要.做到这一 点很容易,只 ...

  8. grep(Global Regular Expression Print)

    .grep -iwr --color 'hellp' /home/weblogic/demo 或者 grep -iw --color 'hellp' /home/weblogic/demo/* (-i ...

  9. spring中scope作用域(转)

    今天研究了一下scope的作用域.默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global sess ...

  10. sql server 常用脚本(日常查询所需)

    1:查看sql server代理中作业的运行状况的脚本 -- descr : a simple sql script to view sql server jobs run status -- las ...