- 浏览: 707109 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
葫芦瓢:
葫芦瓢 写道专注IT 写道请问楼主demo中为什么是Custo ...
Android Scroller简单用法 -
葫芦瓢:
专注IT 写道请问楼主demo中为什么是CustomView中 ...
Android Scroller简单用法 -
u011493452:
注册账号给楼主点赞!
Android Scroller简单用法 -
jiduoduo:
整理的不错!
Android文件存储 -
xiaofeng0817166:
http://deerchao.net/tutorials/r ...
Java正则表达式应用
使用Timer和TimerTask可以将一个动作延迟一段时间执行,或者周期性的执行某项任务。延迟动作可以很方便的用Handler实现,没必要用Timer。使用Timer和TimerTask周期性的执行某项任务还是非常方便的,它们也是Java本身的特性,可参考文档 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html (这个要比Google的文档详细很多,包括schedule与scheduleAtFixedRate的区别,cancel与purge的作用,一目了然)。
Timer和TimerTask使用起来也很简单,先定义一个Timer和TimerTask,再调用Timer的schedule方法,并将TimerTask传进去就行了,schedule的方式有很多,这里只把它们简单的列在这里。其中schedule的参数period,都是相对task上一次开始执行时间的,而scheduleAtFixedRate的参数period是相对task第一次开始执行时间的。还可以参考文章: http://blog.csdn.net/weidan1121/article/details/527307
下面Java代码说明一下使用方法:
[size=medium] 需要注意的是:
1.每一个Timer会单独开启一个线程,Timer中的费时操作不会阻止UI,但要在TimerTask中进行UI操作的话,需要用Handler或Activity.runOnUiThread()方法。
2.每个TimerTask只能被schedule一次,第二次会抛出异常
3.Timer一旦取消,那么它的线程也就没了 (http://disanji.net/2011/04/28/android-timer-tutorial/),不能再在调用Timer的schedule系列函数了,否则会抛出异常。怎么办?再创建一个新的Timer。[/size]
不错的建议,thank you。
Timer和TimerTask使用起来也很简单,先定义一个Timer和TimerTask,再调用Timer的schedule方法,并将TimerTask传进去就行了,schedule的方式有很多,这里只把它们简单的列在这里。其中schedule的参数period,都是相对task上一次开始执行时间的,而scheduleAtFixedRate的参数period是相对task第一次开始执行时间的。还可以参考文章: http://blog.csdn.net/weidan1121/article/details/527307
void schedule(TimerTask task, Date time) // Schedules the specified task for execution at the specified time. void schedule(TimerTask task, Date firstTime, long period) // Schedules the specified task for repeated fixed-delay execution, beginning at the specified time. void schedule(TimerTask task, long delay) // Schedules the specified task for execution after the specified delay. void schedule(TimerTask task, long delay, long period) // Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay. void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) // Schedules the specified task for repeated fixed-rate execution, beginning at the specified time. void scheduleAtFixedRate(TimerTask task, long delay, long period) // Schedules the specified task for repeated fixed-rate execution, beginning after the specified delay.
下面Java代码说明一下使用方法:
package com.ipjmc.timer; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.SlidingDrawer; public class TimerDemoActivity extends Activity { private static final String TAG = "TimerDemo"; private Timer mTimer = new Timer(); private TimerTask mTask = new MyTimerTask("A"); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(TAG, "UI -> " +Thread.currentThread().getId()); new Timer().schedule(mTask, new Date()); mTimer.schedule(new MyTimerTask("B"), new Date()); mTimer.schedule(new MyTimerTask("C"), 2000); } private class MyTimerTask extends TimerTask { private String mName; public MyTimerTask(String name) { mName = name; } @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.i(TAG, mName + " -> " + Thread.currentThread().getId()); } } }
[size=medium] 需要注意的是:
1.每一个Timer会单独开启一个线程,Timer中的费时操作不会阻止UI,但要在TimerTask中进行UI操作的话,需要用Handler或Activity.runOnUiThread()方法。
2.每个TimerTask只能被schedule一次,第二次会抛出异常
new Timer().schedule(mTask, new Date()); new Timer().schedule(mTask, new Date()); //E/AndroidRuntime(760): Caused by: java.lang.IllegalStateException: TimerTask is scheduled already
3.Timer一旦取消,那么它的线程也就没了 (http://disanji.net/2011/04/28/android-timer-tutorial/),不能再在调用Timer的schedule系列函数了,否则会抛出异常。怎么办?再创建一个新的Timer。[/size]
评论
3 楼
ok_lyc
2012-03-15
好。尤其是后面的注意部分,很好!
2 楼
ipjmc
2011-11-29
hzl7652 写道
使用
ScheduledExecutorService
吧
ScheduledExecutorService
吧
不错的建议,thank you。
1 楼
hzl7652
2011-11-27
使用
ScheduledExecutorService
吧
ScheduledExecutorService
吧
发表评论
-
Android Notification的使用
2012-10-20 19:28 9776Android 4.1 (Jelly Bean ... -
短信拦截
2012-09-25 20:40 2089最近写一个应用(A),需要拦截短信分析。一般是 ... -
Android Scroller简单用法
2012-08-01 16:35 65873Android里Scroller类是为了实现Vi ... -
Android 使用WebView.loadData中文乱码解决办法
2012-07-19 15:09 9600博主在使用WebView的loadData方法时发 ... -
Android HttpClient基本使用方法
2012-07-05 14:15 107895这里只介绍如何使用HttpClient发起GET或者POST请 ... -
Android XML定义颜色
2012-06-09 13:15 0在res/colors.xml中添加如下代码: 定义C ... -
Activity和Task的设计思路和方法
2012-03-29 20:20 1247Activity和 Task是 Android ... -
显示PopupWindow
2012-03-16 10:04 16675PopupWindow可 ... -
存储文件的ContentProvider
2012-03-08 23:37 9406基于SQLite的ContentProvider ... -
Android文件存储
2012-03-08 22:34 19473Internal Storage内部存储空 ... -
Android 使用Notification
2012-03-07 10:26 2241用惯了Android的人在刚拿到iPhone的 ... -
Android用软键盘将整个界面推上去
2012-03-04 17:11 35894在Android UI中 ... -
onInterceptTouchEvent和onTouchEvent调用时序
2012-02-11 23:42 1071onInterceptTouchEvent() ... -
使用ConnectivityManager监听网络状态变化
2011-12-24 11:16 29853mIntenFilter = new IntentFilte ... -
Window Manager
2012-03-22 23:51 1553Android的窗口机制基于WindowManager,可以通 ... -
CommonsWare Android Components
2011-12-17 16:10 1762CommonsWare Android Com ... -
Android中图片缩放
2011-12-17 00:09 1927下载的图片如果过大,可能导致内存溢出。需要做压 ... -
Android 使用Parcelable序列化对象
2011-12-16 23:43 36599Android序列化对象主要有两种方法,实现S ... -
PreferenceActivity
2011-12-12 22:54 921传送门:http://www.cnblogs.com/wser ... -
View.scrollBy()与View.scrollTo()的使用
2011-12-12 22:40 19598scrollTo()和scrollBy()都是V ...
相关推荐
### Timer与TimerTask详解 在Java编程语言中,`Timer`和`TimerTask`是用于执行定时任务的重要类。这两个类通常被用来处理那些需要在指定时间或周期性执行的任务,比如定时清理缓存、定时更新数据库等场景。 #### ...
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
### Timer和TimerTask的使用详解 #### 一、引言 `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现...
Java 计时器 Timer 和 TimerTask 用法总结 ...我们介绍了 Timer 和 TimerTask 的基本概念、使用方法和示例代码,并讨论了如何将 Timer 和 TimerTask 与 GUI 组件整合,以实现实时显示时间的效果。
在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务和调度。这两个类在处理需要定期执行的任务时非常有用,例如数据刷新、任务调度或者周期性的系统检查等。本篇文章将深入探讨`TimerTask`...
Java中的Timer和TimerTask简介(附完整代码实例)。 在Java中,Timer和TimerTask是两个经常用来实现定时器的类。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一...
### ICE_Timer and TimerTask 相关知识点解析 #### 一、概述 在计算机编程领域,尤其是多线程处理中,定时任务的管理是一项常见的需求。ICE_Timer 和 TimerTask 是 IceUtil 库中用于实现定时任务调度的核心类。ICE...
本篇将重点讲解如何利用`Timer`和`TimerTask`这两个工具来实现这样的功能,特别是针对`TextView`控件。 `Timer`类是Java.util包中的一个类,它提供了调度任务在未来某个时间点执行的能力。而`TimerTask`是`Timer`类...
在Java编程语言中,`Timer`和`TimerTask`是两个关键类,它们构成了Java的定时执行机制。这两个类在处理周期性任务或者延迟任务时非常有用,它们可以帮助开发者实现程序在特定时间点或者按照一定间隔执行特定操作的...
在Java Web开发中,`ServletContextListener`、`Timer`和`TimerTask`是三个非常重要的概念,它们分别涉及Web应用程序的生命周期管理、定时任务的执行和控制。下面将详细讲解这三个概念及其应用。 首先,`...
Java中的`java.util.Timer`和`java.util.TimerTask`类提供了这样的功能,让我们能够在程序中实现定时任务。本文将深入探讨这两个类的工作原理和如何在Web环境中使用它们。 `Timer`类是Java的一个调度工具,它允许...
java类Timer和TimerTask的使用.doc
在Java编程语言中,`Timer`和`TimerTask`是两个重要的类,它们用于调度周期性的任务执行。这两个类属于`java.util`包,提供了在后台线程中延迟执行任务或者定期执行任务的能力,这对于创建定时任务或者实现定时器...
此外,`Timer`类的`cancel()`方法可以停止所有与之关联的定时任务并销毁定时器线程。 总之,`Java`的`Timer`和`TimerTask`是实现定时任务和计划编程的强大工具,它们适用于需要定期执行操作的场景,如心跳检查、...
本文将结合实际案例探讨如何使用Timer、TimerTask以及ScheduledFuture来实现定时任务,并着重讲解它们的退出机制。 首先,我们来看Timer和TimerTask的使用。Timer类是一个用于调度定时任务的工具,它使用单个后台...
"详解JAVA Timer和TimerTask" JAVA Timer和TimerTask是JAVA语言中两种重要的线程设施,用于实现定时执行任务。下面将详细介绍JAVA Timer和TimerTask的概念、用法和优点。 JAVA Timer JAVA Timer是一种线程设施,...
在这种情况下,`java.util.Timer` 和 `java.util.TimerTask` 类提供了非常有用的机制来实现周期性任务。本文将深入探讨这两个类的使用方法及其相关知识点。 首先,`Timer` 类是一个线程类,它负责调度任务的执行。...
Java中的`Timer`和`TimerTask`类是用于创建和管理定时任务的工具,它们提供了在特定时间点或按照预设间隔执行任务的功能。这两个类是Java标准库`java.util`包的一部分,对于需要定时执行操作的应用场景非常有用。 `...
在这种场景下,Android提供了多种机制来实现定时任务,包括`Timer`、`TimerTask`以及`Handler`。这三种工具可以协同工作,确保数据更新和View更新的同步,从而避免界面卡顿和不流畅的问题。 1. **Android Timer** ...
这时,`TimerTask` 和 `Timer` 类就派上了用场。本篇将详细介绍如何在Android中使用`TimerTask`来实现定时任务,并通过一个简单的Demo进行示例说明。 `TimerTask`是Java提供的一个定时执行任务的类,它继承自`...