Timer、TimerTask的简单应用及如何解决多次调度相同任务。

 我来答
小楠的后宫168
2013-11-06 · 超过64用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:115万
展开全部
1、Timer类用来干嘛滴?Timer是提供以指定的时间间隔执行某方法的这样一种机制,即如果想要实现一个定时发送数据,比如每隔3s中发送一次心跳报文,或者执行某个指定的方法,都可以考虑用Timer类来实现,不过要提出的是Timer类一边用来做一些比较简单又不耗时间的操作。据说是因为它执行的任务仍然在主线程里面(不确定,望牛人指出)。2、Timer类最常用的方法:cancel() //取消当然任务schedule(TimerTask task, long delay) //延时一段时间执行task任务schedule(TimerTask task, long delay, long period)//延时delay时间后,执行task任务,以后每隔peroid时间执行一次task任务。3、如何用?在Java中如何使用,代码如下:public class TimerTest{public static void main(String[] args){timerTest();}private static void timerTest(){final Timer timer = new Timer();TimerTask task = new TimerTask(){int i = 0;public void run(){System.out.println("次数====" + i++);if(i == 10){i = 0 ;timer.cancel();// timerTest();}}};timer.schedule(task, 1000, 1000);}}注: 注释掉蓝色字眼的timerTest();是用来解决多次调度执行相同任务实现滴。就如实现从0到10输出后,又要从0开始输出,这两次调度。就要用重新调用此方法来实现。Android里面,代码如下:public class TimerTestAndroidActivity extends Activity{Handler handler;TextView textView;Timer timer ;public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);textView = (TextView) findViewById(R.id.textView1);playTimer();handler = new Handler(){int i = 0;public void handleMessage(Message msg){i = msg.what;textView.setText("The current number is " + i);if (i == 5){timer.cancel();playTimer();}}};}private void playTimer(){timer= new Timer();timer.schedule(new TimerTask(){ int i;public void run(){Message msg = new Message();msg.what = i++;handler.sendMessage(msg);}}, 1000, 1000); }}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式