点击button暂停

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.button)
Button button; @BindView(R.id.first_textview)
TextView textView; Handler mHandler; volatile boolean flag=true;
Object object=new Object();
MThread mThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ButterKnife.bind(this); textView.setText(String.valueOf()); mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
textView.setText(String.valueOf(msg.what));
}
}; mThread=new MThread();
mThread.start(); button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!mThread.isAlive()){
mThread=new MThread();
mThread.start();
return;
}
if(flag==true){
flag=!flag;
}
else{
synchronized (object){
flag=!flag;
object.notify();
}
} }
});
} public class MThread extends Thread{
@Override
public void run() {
System.out.println("enter thread");
for(int i=;i>=;i--){
if(flag==false){
synchronized (object) {
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println(i);
mHandler.sendEmptyMessage(i);
try {
sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
} }

两个handler:

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.button)
Button button; @BindView(R.id.textview)
TextView textView; Handler mFirstHandler;
Handler mSecondHandler; volatile boolean flag = true;
Object object = new Object();
SecondThread mThread;
FirstThread mFirstThread; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity); ButterKnife.bind(this); textView.setText(String.valueOf()); mSecondHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
textView.setText(String.valueOf(msg.what));
return true;
}
}); mThread = new SecondThread();
mThread.start(); mFirstThread = new FirstThread();
mFirstThread.start();
} public class SecondThread extends Thread {
@Override
public void run() {
Looper.prepare();
Looper.loop();
System.out.println("*****************");
mFirstHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mSecondHandler.sendEmptyMessage(msg.what);
}
};
}
} public class FirstThread extends Thread {
@Override
public void run() {
System.out.println("enter first thread"); for (int i = ; i >= ; i--) {
Message message = Message.obtain();
message.what = i;
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
mFirstHandler.sendMessage(message);
}
}
} }

使用ThreadHandler

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.button)
Button button; @BindView(R.id.textview)
TextView textView; Handler mFirstHandler;
Handler mSecondHandler; Thread t=new FirstThread(); volatile boolean flag = true;
Object object = new Object();
HandlerThread handlerThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity); ButterKnife.bind(this); textView.setText(String.valueOf(1)); mSecondHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
textView.setText(String.valueOf(msg.what));
return true;
}
}); handlerThread=new HandlerThread("1");
handlerThread.start();
mFirstHandler=new Handler(handlerThread.getLooper()){
@Override
public void handleMessage(Message msg) {
mSecondHandler.sendEmptyMessage(msg.what);
}
}; t.start();
} public class FirstThread extends Thread {
@Override
public void run() {
System.out.println("enter first thread"); for (int i = 20; i >= 0; i--) {
Message message = Message.obtain();
message.what = i;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
mFirstHandler.sendMessage(message);
}
}
} }

使用handler倒计时的更多相关文章

  1. Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面

    上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去 ...

  2. Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》

    之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...

  3. Android中使用Handler以及CountDownTimer实现包括倒计时的闪屏页面

    上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的用法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友能够点击链接回去看看 ...

  4. 倒计时 总结 Timer Handler CountDownTimer RxJava MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 倒计时实现方案总结 Timer Handler

    利用Timer实现倒计时 @BindView(R.id.send) Button send;//发送验证码 private int time = 60;//倒计时 private Timer time ...

  6. Android—实现自定义相机倒计时拍照

    这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: 两个TextView是用来显示提示信息和倒计时的 ...

  7. Android倒计时:计算两个时间将得到的时间差转化为倒计时(xx时xx分xx秒格式)

    首先是一个自定义控件: public class RushBuyCountDownTimerView extends LinearLayout { // 小时,十位 private TextView ...

  8. Android---闪频页和倒计时

    android闪频的实现非常简单,使用Handler对象的postDelayed()方法就可以实现.在这个方法里传递一个Runnable对象和一个延迟的时间.该方法实现了一个延迟执行的效果,延迟的时间 ...

  9. Android中实现倒计时

    1.需求 弹出提示的dialog,实现倒计时,结束后关闭dialog 2.dialog界面布局 <?xml version="1.0" encoding="utf- ...

随机推荐

  1. linux mint18 cinnamon 64bit 安装 docker

    参考官方文档:https://docs.docker.com/engine/installation/linux/ubuntu/ 1. 安装一些使 apt 可以使用 https 的源 sudo apt ...

  2. .net aop 操作 切面应用 Castle.Windsor框架 spring 可根据接口 自动生成一个空的实现接口的类

    通过unget 安装Castle.Windsor using Castle.DynamicProxy; using System; using System.Collections.Generic; ...

  3. mysql远程连接很慢问题解决

    mysql开启远程访问发现从远程连接每次都在5秒以上,从本机连接很快. 解决方案: [mysqld] 标签下添加一行配置 skip-name-resolve 重启mysqld服务, 问题解决!

  4. CMDB项目开发

    CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧 ...

  5. JS判断数组的值出现的次数,以及去重

    var arr = ["曹阳","曹阳","曹阳","张三","张三","张三" ...

  6. 2018-2019 网络对抗技术 20165231 Exp5 MSF基础应用

    实践内容(3.5分) 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践(1分) ms08_067; (失败) MS17-010永 ...

  7. [Kubernetes]容器日志的收集与管理

    在开始这篇文章之前,首先要明确一点: Kubernetes 中对容器日志的处理方式,都叫做 cluster-level-logging ,也就是说,这个日志处理系统,与容器, Pod 以及 Node ...

  8. 【C++11】unoedered_map和map(部分转载)

    1.结论 新版的hash_map都是unordered_map了,这里只说unordered_map和map. 运行效率:unordered_map最高,而map效率较低但提供了稳定效率和有序的序列. ...

  9. pwnable.tw silver_bullet

    产生漏洞的原因 int __cdecl power_up(char *dest) { char s; // [esp+0h] [ebp-34h] size_t new_len; // [esp+30h ...

  10. 写一个python脚本监控在linux中的进程

    在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...