`

Android 计时器Timer用法

阅读更多

昨天晚上在写一个Android的计时器,开始认为很容易,用Java一般写法,结果发现计时器根本不能运行,但却不报任何错误,当时就呆在那了,不知道该怎么办了,后来在网上查了一下,Android考虑到线程安全问题,不允许在线程中执行UI线程(我的现在所知道,还有其他的限制发现中),在Android中,有一个很有意思的类:android.os.Handler,这个可以实现各处线程间的消息传递。
先看段代码,这个实例化了一个Handler,Handler可以通过Message在多个线程通讯,我这里做的是定时recLen加1,然后以一定的格式,显示到recTime上(UI线程上的操作)。


 1 final Handler handler = new Handler(){  
 2     public void handleMessage(Message msg) {  
 3         switch (msg.what) {      
 4             case 1:      
 5                 recLen++;
 6         recTime.setText(GetRecTime(recLen));
 7                 break;      
 8             }      
 9             super.handleMessage(msg);  
10         }    
11     };  


下面定实例化一个TimerTask,这个是为Timer提供一个定时执行的内容。我在这个方法中加的是给Handler一个发送消息功能,因这在Timer的线程中,无法直接操作UI线程。

1 TimerTask task = new TimerTask(){  
2       public void run() {  
3       Message message = new Message();      
4       message.what = 1;      
5       handler.sendMessage(message);    
6    }  
7 };  


剩下的工作就简单多,添加一个Timer,可以让程序运行起来了

1 timer = new Timer(true);
2 timer.schedule(task,10001000); //延时1000ms后执行,1000ms执行一次
3 //timer.cancel(); //退出计时器


说到这里,也许有些还感觉云里雾里,好久没写东西,也不知道怎么把问题说的更明白,这个再贴上我开始的错误写法,对比错误写法,也许能让大家更快的明白过来


1TimerTask task = new TimerTask(){  
2    public void run() {  
3        recLen++;
4        recTime.setText(GetRecTime(recLen));//直接在TimerTask中操作UI线程,单步调试的时候发现,程序根本就没执行到这里
5    }
  
6}
;  
7timer = new Timer(true);
8timer.schedule(task,10001000);  


转自:http://www.cnblogs.com/xzf158/archive/2009/09/04/1560042.html

分享到:
评论

相关推荐

    android 计时器

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

    Android计时器实现

    ### 一、Android计时器基础 在Android中,有多种计时器实现方式,包括`java.util.Timer`、`android.os.Handler`以及`CountDownTimer`。其中,`CountDownTimer`是Android提供的一个专为Android环境设计的倒计时工具...

    Android Studio通过Handler制作简单的计时器

    总的来说,通过这个实例,你不仅学会了如何在Android Studio中创建一个简单的计时器应用,还掌握了Handler的基本用法。理解并熟练掌握Handler对于进行Android应用开发至关重要,因为它是处理主线程与子线程通信、...

    android倒计时器

    在Android开发中,倒计时器(CountDownTimer)是一个非常实用的组件,常用于实现各种需要倒计时功能的应用场景,比如定时提醒、在线考试、抢购倒计时等。`CountDownTimer` 类是Android SDK提供的一个内置类,它可以...

    android简易倒计时器

    在文件名为“Timer”的资源中,可能包含了创建自定义倒计时器的类或XML布局文件。你可以打开这些文件查看具体的实现细节,如自定义的倒计时逻辑、异常处理等。 总的来说,Android的CountDownTimer类为开发者提供了...

    安卓 简单计时器 计时器

    首先,计时器(Timer)在Android中通常通过`java.util.Timer`类或者`android.os.Handler`类来实现。在"简单计时器 开始/继续 清空 暂停"的描述中,我们可以推断出计时器应该有以下功能: 1. **开始/继续**:计时器...

    适用于Android的rxjava2计时器-Android开发

    现在是一个库用法计时器= Rx2Timer.builder().initialDelay(0)//默认值为0 .period(1)//默认值为1 .take(30)//默认值为60 .unit(TimeUnit.SECONDS)/ /默认值为TimeUnit.SECONDS .onEmit(count-> {if...

    Xamarin.forms 计时器

    Xamarin.Forms 中主要有两种计时器:`System.Threading.Timer` 和 `Xamarin.Forms.Device.StartTimer`。这两种计时器各有特点,适用于不同的场景。 1. **System.Threading.Timer**: 这是一个基于线程池的计时器,...

    Android中CountDownTimer倒计时器用法实例

    本文实例讲述了Android中CountDownTimer倒计时器用法。分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写。现在发现了这...

    regatta-timer:适用于 Android Smartwatch 的帆船赛计时器

    此应用程序是适用于 Android 智能手表的帆船赛计时器。 概述 Regatta Timer 的作用类似于 Optimum Time Series 3 手表,用于帆船比赛。 它具有作为常规手表实现的所有计时器和秒表功能。 用法 行动 Prog:将配置的...

    Android倒计时的源码

    总之,Android的`CountDownTimer`是实现倒计时功能的强大工具,它简化了计时器的使用,并提供了在每个时间间隔和结束时的回调,使得开发者可以轻松地处理倒计时过程中的各种业务逻辑。通过深入理解和实践,你可以...

    Android 倒计时实现源码.zip

    在Android中,倒计时功能可以通过Java语言内置的`java.util.Timer`类或者自定义的`CountDownTimer`类来实现。`CountDownTimer`是Android SDK提供的一个专门用于倒计时的类,它具有易于使用、线程安全等优点。下面将...

    Timer小工程文件

    【标题】"Timer小工程文件"揭示了一个关于Android平台中计时器(Timer)的简易应用实例。在Android开发中,Timer是一个强大的工具,用于安排在未来某一时刻或定期执行任务。这个压缩包提供的"TimerDemo"很可能是包含...

    关于抢购倒计时的整理demo

    `CountDownTimer`是Android SDK提供的一种轻量级的计时器,非常适合用于这种短暂的倒计时场景。 首先,我们需要了解`CountDownTimer`的基本用法。`CountDownTimer`有两个参数:总时长(millisInFuture)和间隔时间...

    Android Handler 图片浏览器

    计时器(Timer)在Android中通常用于定时执行某项任务,例如轮播图的自动切换。我们可以设置一个TimerTask,每隔一定时间(如3秒)发送一个消息到Handler,Handler接收到消息后更新图片显示。计时器的使用方式如下:...

    Android源码——倒计时实现源码_new_33.zip

    倒计时器`CountDownTimer`是Android SDK提供的一种轻量级的计时工具类。使用`CountDownTimer`,开发者可以方便地创建一个从指定时间开始倒计时,并在每个间隔执行特定操作的定时器。它的基本用法如下: 1. **创建...

    倒计时CountDownTimer的使用

    在Android开发中,倒计时器(CountDownTimer)是一个非常实用的工具,它用于实现从一个固定时间点开始到零的倒计时功能。在本项目“倒计时CountDownTimer的使用”中,我们将深入探讨如何在Android应用程序中有效地...

    android ViewPager自动滑动(广告栏效果)

    接下来,为了实现自动滑动,我们需要在Activity或Fragment中设置一个定时器(Timer)和计时器任务(TimerTask)。在计时器任务中,调用ViewPager的`setCurrentItem()`方法,传入当前页索引加1(或减1,取决于是否向...

Global site tag (gtag.js) - Google Analytics