`
ch_kexin
  • 浏览: 898778 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

Android 计时器实现

阅读更多

 

一、CountDownTimer

    // 倒计时
    // 总时间 24 * 60 * 60 * 1000,间隔 1000s 回调一次 onTick
    CountDownTimer countDownTimer = new CountDownTimer(24 * 60 * 60 * 1000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            //单位天
            long day = millisUntilFinished / (1000 * 24 * 60 * 60);
            //单位时
            long hour = (millisUntilFinished - day * (1000 * 24 * 60 * 60)) / (1000 * 60 * 60);
            //单位分
            long minute = (millisUntilFinished - day * (1000 * 24 * 60 * 60) - hour * (1000 * 60 * 60)) / (1000 * 60);
            //单位秒
            long second = (millisUntilFinished - day * (1000 * 24 * 60 * 60) - hour * (1000 * 60 * 60) - minute * (1000 * 60)) / 1000;

            // 倒计时间隔回调
            Log.d("TAG", String.format("剩余时间:%d时%d分%d秒", hour, minute, second));
        }

        @Override
        public void onFinish() {
            // 倒计时结束时的回调
        }
    };

 

// 开始倒计时
countDownTimer.start();
        
// 取消倒计时
countDownTimer.cancel(); 

二、handler.postDelayed

private Handler handler = new Handler();

private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        Log.d("TAG", "run: ");
        handler.postDelayed(this, 1000);
    }
};

// 启动计时器
handler.postDelayed(runnable, 1000);

// 停止计时器
handler.removeCallbacks(runnable);

 

三、Handler + Timer + TimerTask

private Timer timer = new Timer();
private Handler handler = new Handler(Looper.getMainLooper()){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Log.d("TAG", "handleMessage: timer");
    }
};

 

// 初始化计时器任务
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        Message msg = handler.obtainMessage();
        msg.what = 1;
        msg.obj = "";
        msg.sendToTarget();
    }
};
// 启动计时器,延迟 1s 执行,每 2s 执行一次
timer.schedule(task, 1000, 2000);

 

// 停止计时器
timer.cancel();

 

四、Handler + Thread.sleep()

private Handler handler = new Handler(Looper.getMainLooper()){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Log.d("TAG", "handleMessage: ");
    }
};

 

new Thread(new Runnable() {
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(1000);
                Message msg = handler.obtainMessage();
                msg.what = 1;
                msg.obj = "";
                msg.sendToTarget();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}).start();

 

 

 

 

分享到:
评论

相关推荐

    Android计时器实现

    在Android中,有多种计时器实现方式,包括`java.util.Timer`、`android.os.Handler`以及`CountDownTimer`。其中,`CountDownTimer`是Android提供的一个专为Android环境设计的倒计时工具,它具有线程安全和易于使用的...

    Android简单计时器实现

    这个项目适合初学者学习和理解Android计时器的实现方式,也可以根据自己的需求进行修改以适应不同的项目需求。 首先,我们需要了解Android中常用的两种计时器:`java.util.Timer` 和 `android.os.Handler`。在这个...

    android,linux 计时器多种实现

    本文将深入探讨三种不同的计时器实现,包括它们的工作原理、优缺点以及适用场景。 第一种计时器实现:`System.currentTimeMillis()` 在Java中,`System.currentTimeMillis()` 是一个常用的方法,它返回自1970年1月1...

    Android Studio 写的时分秒计时器

    总的来说,这个项目是一个基础的Android计时器应用,它展示了如何在Android Studio中创建用户界面、处理用户交互以及实现计时功能。通过这个项目,初学者可以学习到Android应用的基本架构、Activity的生命周期、UI...

    Android简单的计时器源码

    这里提到的是基于`Handler`的计时器实现,因为`Handler`更适合于UI线程的更新操作。 1. **Handler**:`Handler` 是 Android 中处理消息和延迟执行任务的核心类。通过创建一个`Handler`对象并关联到 Looper(消息...

    android 计时器

    在Android开发中,计时器是一项非常常见的功能,用于实现定时执行特定任务。"android 计时器"通常指的是Android SDK提供的一系列类,用于帮助开发者实现倒计时或者周期性任务。本篇将深入探讨如何使用Android中的...

    一个简单的android计时器

    本节将详细介绍如何创建一个简单的Android计时器。 首先,我们需要了解Android计时器的基础。在Android中,有两种主要的计时方式:`CountDownTimer`和`Handler`配合`Runnable`。本例中提到的"一个简单的android计时...

    Android 实现一个计时器

    下面是一个简单的计时器实现步骤: 1. **创建Handler对象**:首先,我们需要创建一个`Handler`实例,这通常在Activity或Service的`onCreate()`方法中完成。创建`Handler`时,我们通常会重写`handleMessage()`方法,...

    Android计时器工具

    在Android开发中,计时器工具是不可或缺的一部分,特别是在创建倒计时或者定时触发某些功能的应用场景中。本文将深入探讨Android中常用的倒计时实现方式——`CountDownTimer`控件,以及如何在子线程中更新UI,并结合...

    android计时器

    APKBus网站上提供的链接指向了一个讨论帖,虽然原始链接已经无法访问,但我们可以基于一般的Android计时器实现来探讨相关的知识点。 1. **Handler**与**Looper** 在Android中,主线程是负责处理用户界面交互的线程...

    Android计时器的三种实现方式(Chronometer、Timer、handler)

    本文将介绍三种常见的Android计时器实现方式:Timer、Handler以及Chronometer。 1. 借助`Timer`实现 `Timer`类是Java中的一个定时任务调度工具,它可以安排在将来某一时刻执行或定期执行的任务。在Android中,由于...

    Android 计时器

    以下是关于Android计时器及其相关功能的详细说明: 1. **计时器组件**: - 在Android中,我们可以使用多种方式实现计时功能,如`Handler`、`CountDownTimer`、`AlarmManager`或者`SystemClock`。在这个应用中,...

    android秒表 计时器

    在Android平台上,开发一个秒表或计时器应用是一项常见的任务,这涉及到对用户界面(UI)设计、事件处理以及时间管理的理解。本项目聚焦于创建一个基础的Android秒表功能,下面将详细介绍相关的知识点。 1. **...

    android计时器源代码

    现在,关于源代码部分,Android计时器的实现位于Android开放源代码项目(AOSP)中。源码主要分布在`frameworks/base/core/java/android/widget/Chronometer.java`文件。通过阅读源代码,你可以了解到计时器内部的...

    android简单倒数计时器

    在Android平台上,倒数计时器(CountdownTimer)是一个常用的功能,用于实现从特定时间点开始倒计时至零的计时任务。本项目"android简单倒数计时器"是一个基于Ubuntu 10.04操作系统和Eclipse Galileo IDE的Android...

    android计时器小项目

    对于性能优化,可以考虑使用`CountDownTimer`类,它是一个预先定义好的计时器实现,简化了处理逻辑。还可以考虑添加振动、音效等增强用户体验的功能。 通过这个简单的计时器项目,开发者不仅可以掌握Android应用的...

Global site tag (gtag.js) - Google Analytics