使用handler倒计时
点击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倒计时的更多相关文章
- Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面
上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去 ...
- Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》
之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...
- Android中使用Handler以及CountDownTimer实现包括倒计时的闪屏页面
上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的用法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友能够点击链接回去看看 ...
- 倒计时 总结 Timer Handler CountDownTimer RxJava MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 倒计时实现方案总结 Timer Handler
利用Timer实现倒计时 @BindView(R.id.send) Button send;//发送验证码 private int time = 60;//倒计时 private Timer time ...
- Android—实现自定义相机倒计时拍照
这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: 两个TextView是用来显示提示信息和倒计时的 ...
- Android倒计时:计算两个时间将得到的时间差转化为倒计时(xx时xx分xx秒格式)
首先是一个自定义控件: public class RushBuyCountDownTimerView extends LinearLayout { // 小时,十位 private TextView ...
- Android---闪频页和倒计时
android闪频的实现非常简单,使用Handler对象的postDelayed()方法就可以实现.在这个方法里传递一个Runnable对象和一个延迟的时间.该方法实现了一个延迟执行的效果,延迟的时间 ...
- Android中实现倒计时
1.需求 弹出提示的dialog,实现倒计时,结束后关闭dialog 2.dialog界面布局 <?xml version="1.0" encoding="utf- ...
随机推荐
- Python面向对象之反射
一.反射的基本概念 二.反射示例 三.反射的应用 一.反射的基本概念 反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),Python中一切皆对象,都可以使用反射. 反射有 ...
- Sql server 用T-sql读取本地数据文件dbf的数据文件
第一步启用Ad Hoc Distributed Queries 在SQLserver执行以下的语句: exec sp_configure 'show advanced options',1 reco ...
- go [第一篇]初识
[第一篇] 简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...
- asp.net webapi 获取报文体的问题
用这种方法: var data=await Request.Content.ReadAsStringAsync(); 一般都无法获取到内容.原因是内部的流对象已经到了最后面.要获取到里面的需要把流的位 ...
- Capsules for Object Segmentation(理解)
0 - 背景 今年来卷积网络在计算机视觉任务上取得的显著成果,但仍然存在一些问题.去年Hinton等人提出了使用动态路由的新型网络结构——胶囊网络来解决卷积网络的不足,该新型结构在手写体识别以及小图像 ...
- 《NFC开发实战详解》笔记
地点:30教 5楼 男厕对面 * 时间:下午三点 * 天气:中雨 * 状态:3 * ******************************************************* ...
- 走进异步编程的世界 - 开始接触 async/await(转)
序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Fo ...
- JAVA This的简单运用
package Code426;/*当方法的局部变量和类的成员变量重名时,根据“就近原则”,优先使用局部变量如果需要访问本类当中的成员变量,需要使用 this.成员变量 通过谁调用的方法,谁就是thi ...
- Docker----与Asp.net core 的完美结合,在docker容器中创建Asp.Net Core 项目
在腾讯云上买了一个小容量的服务器,搭建一个docker环境后,可以尝试做一些单系统做起来很麻烦的东西.譬如说,你在windows OS或UbuntuOS中,突然想玩CentOS了,你可以选择将电脑再装 ...
- cocoapods 创建公开公共库
1 :首先安装了 pod,sourceTree(下载地址https://pan.baidu.com/s/1c1Wc5ck), 并在开元中国申请的 git 账号 2 :打开终端: cd 文件目录地址(任 ...