方法一
Timer与TimerTask(Java实现)
[java] view plaincopy
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
timer.schedule(task, 1000, 1000); // timeTask
}
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
});
}
};
}
方法二
TimerTask与Handler(不用Timer的改进型)
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
timer.schedule(task, 1000, 1000); // timeTask
}
final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};
TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
方法三
Handler与Message(不用TimerTask)
public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
Message message = handler.obtainMessage(1); // Message
handler.sendMessageDelayed(message, 1000);
}
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
txtView.setText("" + recLen);
if(recLen > 0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // send message
}else{
txtView.setVisibility(View.GONE);
}
}
super.handleMessage(msg);
}
};
}
方法四
Handler与Thread(不占用UI线程)
public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
new Thread(new MyThread()).start(); // start thread
}
final Handler handler = new Handler(){ // handle
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
recLen++;
txtView.setText("" + recLen);
}
super.handleMessage(msg);
}
};
public class MyThread implements Runnable{ // thread
@Override
public void run(){
while(true){
try{
Thread.sleep(1000); // sleep 1000ms
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}catch (Exception e) {
}
方法五
Handler与Runnable(最简单型)
public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);
runnable.run();
}
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
};
}
计时与倒计时
方法1,方法2和方法3,都是倒计时
方法4,方法5,都是计时
计时和倒计时,都可使用上述方法实现(代码稍加改动)
UI线程比较
方法1,方法2和方法3,都是在UI线程实现的计时;
方法4和方法5,是另开Runnable线程实现计时
实现方式比较
方法1,采用的是Java实现,即Timer和TimerTask方式;
其它四种方法,都采用了Handler消息处理
推荐使用
如果对UI线程交互要求不很高,可以选择方法2和方法3
如果考虑到UI线程阻塞,严重影响到用户体验,推荐使用方法4,另起线程单独用于计时和其它的逻辑处理
方法5,综合了前几种方法的优点,是最简的
相关推荐
Android 实现计时与倒计时(限时抢购)的几种方法 Android 实现计时与倒计时(限时抢购)的几种方法是 Android 应用程序开发中非常重要的一部分,特别是在购物网站的促销活动中。这些倒计时限制购物时间或者折扣的...
Android计时与倒计时实现限时抢购的5种方法是Android开发中常见的需求,特别是在购物网站的促销活动中,倒计时限制购物时间或者折扣的时间是非常常见的,下面我们将详细介绍Android计时与倒计时实现限时抢购的五种...
在Android开发中,"android listview实现抢购倒计时"是一个常见的需求,尤其是在电商应用中,用于模拟商品抢购的紧张氛围。本教程将详细讲解如何在ListView中实现这样的功能,让每个列表项都能显示实时更新的倒计时...
综上所述,实现Android限时抢购功能的关键在于自定义Adapter的构建、倒计时逻辑的处理以及合理的数据模型设计。通过合理的UI布局和网络请求,可以为用户提供流畅、实时的抢购体验。在实际开发中,还应考虑异常处理、...
在Android开发中,抢购活动通常会设置倒计时来增加紧张感和用户参与度,本文将详细讲解如何使用`CountDownTimer`类实现抢购倒计时的逻辑。`CountDownTimer`是Android SDK提供的一种轻量级的计时器,非常适合用于这种...
通过结合Swing组件与多线程技术,可以轻松地在GUI中实现实时更新的倒计时功能。 #### 二、关键技术点解析 ##### 2.1 Swing组件基础 Swing是Java中用于创建GUI的组件工具包,它提供了大量的GUI组件,如按钮、文本框...
在Android开发中,倒计时(CountDownTimer)是一个常用的功能,尤其在电商应用中,如京东商城,常用于限时抢购、倒计时显示等场景。本项目"Android倒计时 Android仿京东倒计时 Android商城倒计时"正是针对这种需求而...
在Android开发中,限时抢购页面常常涉及到动态更新的倒计时显示,这通常与ListView的使用密切相关。ListView因其高效的数据展示能力而被广泛应用,但同时也存在一些挑战,如倒计时的正确显示和列表滚动时的卡顿问题...
在Android中,有两种主要的实现倒计时的方法:`CountDownTimer`类和`Handler`配合`Runnable`。这里我们重点介绍`CountDownTimer`,因为它更易于使用且适合倒计时场景。 `CountDownTimer`是Android提供的一个内置类...
【Android高级应用源码-活动限时抢购倒计时案例】是一个典型的Android应用程序开发实例,主要涉及了在Android平台上实现动态、实时的倒计时功能,常见于电商平台的限时抢购场景。通过分析这个源码,我们可以深入学习...
总结来说,实现Java Swing的计时与倒计时功能涉及到以下几个关键点: 1. 使用Swing组件创建用户界面,如JFrame、JTextField、JButton等。 2. 处理用户输入的时间,确保格式正确。 3. 使用多线程或者javax.swing....
在Android开发中,创建一个倒计时欢迎页面是一种常见的用户交互设计,它可以为用户提供一种预期的等待体验,尤其是在应用启动时。在这个特定的项目中,"android studio倒计时三秒欢迎页面"是一个使用Android Studio...
定时器与倒计时** 在Android中,倒计时功能通常通过`CountDownTimer`类实现。这是一个抽象类,需要我们覆盖它的`onTick`和`onFinish`方法,`onTick`在每间隔一定毫秒时调用,`onFinish`在倒计时结束时调用。项目中...
本教程将详细介绍如何在Android环境中实现这些功能,包括开始计时、开始倒计时、暂停、继续以及重置。 首先,我们需要了解Android中的两种主要时间处理类:`CountDownTimer`和`Chronometer`。`CountDownTimer`适用...
在Android应用开发中,有时我们需要实现一种功能,即在用户界面上显示3秒倒计时,用户可以选择在倒计时结束前点击界面来取消自动关闭,或者等待倒计时结束后,程序自动关闭界面。这样的设计可以增加用户体验,给用户...
在Android中,可以使用`DatePicker`和`TimePicker`对话框让用户选择日期和时间,然后将这些选择与倒计时结合,创建一个基于选定日期和时间的倒计时。 关于倒计时多久刷新一次UI,开发者需要权衡性能和用户体验。...
在C#编程中,多线程计时器和倒计时是常见的应用场景,尤其是在需要并发执行任务或实现定时操作的场合。本篇文章将深入探讨C#中的多线程计时器以及如何实现倒计时功能。 首先,让我们了解C#中的多线程。在.NET ...
本文将深入探讨如何创建一个简单的Android倒计时程序,并基于提供的C#倒计时客户端文件,我们可以推断出虽然标题提及的是Android,但可能包含了跨平台的C#实现。 1. **基本概念** - **倒计时(Countdown)**: 是一...
本文将深入探讨Qt5中的多线程以及如何结合Qt的信号与槽机制(connet)实现时钟和倒计时功能。 首先,多线程允许程序在不同的线程上运行独立的任务,避免了单一线程中长时间运行的操作阻塞用户界面。在Qt5中,我们...