- 浏览: 703403 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
葫芦瓢:
葫芦瓢 写道专注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 9734Android 4.1 (Jelly Bean ... -
短信拦截
2012-09-25 20:40 2048最近写一个应用(A),需要拦截短信分析。一般是 ... -
Android Scroller简单用法
2012-08-01 16:35 65786Android里Scroller类是为了实现Vi ... -
Android 使用WebView.loadData中文乱码解决办法
2012-07-19 15:09 9557博主在使用WebView的loadData方法时发 ... -
Android HttpClient基本使用方法
2012-07-05 14:15 107839这里只介绍如何使用HttpClient发起GET或者POST请 ... -
Android XML定义颜色
2012-06-09 13:15 0在res/colors.xml中添加如下代码: 定义C ... -
Activity和Task的设计思路和方法
2012-03-29 20:20 1204Activity和 Task是 Android ... -
显示PopupWindow
2012-03-16 10:04 16642PopupWindow可 ... -
存储文件的ContentProvider
2012-03-08 23:37 9353基于SQLite的ContentProvider ... -
Android文件存储
2012-03-08 22:34 19375Internal Storage内部存储空 ... -
Android 使用Notification
2012-03-07 10:26 2198用惯了Android的人在刚拿到iPhone的 ... -
Android用软键盘将整个界面推上去
2012-03-04 17:11 35852在Android UI中 ... -
onInterceptTouchEvent和onTouchEvent调用时序
2012-02-11 23:42 1047onInterceptTouchEvent() ... -
使用ConnectivityManager监听网络状态变化
2011-12-24 11:16 29799mIntenFilter = new IntentFilte ... -
Window Manager
2012-03-22 23:51 1525Android的窗口机制基于WindowManager,可以通 ... -
CommonsWare Android Components
2011-12-17 16:10 1724CommonsWare Android Com ... -
Android中图片缩放
2011-12-17 00:09 1888下载的图片如果过大,可能导致内存溢出。需要做压 ... -
Android 使用Parcelable序列化对象
2011-12-16 23:43 36525Android序列化对象主要有两种方法,实现S ... -
PreferenceActivity
2011-12-12 22:54 887传送门:http://www.cnblogs.com/wser ... -
View.scrollBy()与View.scrollTo()的使用
2011-12-12 22:40 19539scrollTo()和scrollBy()都是V ...
相关推荐
Timer与TimerTask(计时器)
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
Timer和TimerTask的使用 关于java函数中timer类的相关代码 和使用
本文首先设计一个单次定时器Timer+TimerTask,然后再次基础上设计一个循环定时器。
ICE_Timer and TimerTask相关
Java中的Timer和TimerTask简介(附完整代码实例)。 在Java中,Timer和TimerTask是两个经常用来实现定时器的类。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一...
通过java的TimerTask与Timer设计时间监控,写了一个测试类,帮助新人学习。
Java计时器Timer和TimerTask用法总结
java类Timer和TimerTask的使用.doc
JavaTimer和TimerTask实例教程Java开发Java经验技巧共3页.pdf.zip
java类Timer和TimerTask的使用.pdf
本文档主要讲述的是Java中的Timer和TimerTask的使用;Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类。希望本文档会给有需要...
Android Timer TimerTask Handler 三者结合实现 数据更新与View更新的同步。 一个不错的机制。
在控件上动态显示内容,这里使用的是TextView,其他控件可以使用相同的方法。
NULL 博文链接:https://chenhua-1984.iteye.com/blog/374683
本篇文章主要介绍了解析Java中的Timer和TimerTask在Android中的用法,主要介绍了Timer和TimerTask的用法,有需要的可以了解一下。
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1199750
Timer与TimerTask编写的定时器(在spring+struts2+mybatis框架下)
1.实现Push推送demo,用AlarmManager实现全局定时和Timer、TimerTask两种方式分别实现定时服务状态栏Notification消息提醒! 2.该功能经过测试,只需要从服务上定时获取到提醒消息即可,稍做修改,即可使用。 3.可以...
主要介绍了JAVA Timer和TimerTask的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下