android开发之定时器实现
时间:10-02
整理:3721RD
点击:
有时在在处理一些算法过程中,需要每隔固定时长执行一段代码,android中提供了这样的一个类Timer,我们使用的是里面的scheduleAtFixedRate方法,delay是开始定时之前的延时,delay和period单位都是ms,下面是这个方法的声明。
public void scheduleAtFixedRate(TimerTask task, long delay, long period)
public void scheduleAtFixedRate(TimerTask task, Date when, long period)
使用cancel方法取消定时
public void cancel()
要注意区别的是schedule方法,声明如下。可以参考如下博客:http://blog.csdn.net/gtuu0123/article/details/6040159 博客中“下一次的执行时间点=上一次程序执行完成的时间点+间隔时间”与结论的关系我不是很理解,如果有人知道烦请回复下,一起探讨学习。
public void schedule(TimerTask task, Date when)
public void schedule(TimerTask task, long delay)
public void schedule(TimerTask task, long delay, long period)
public void schedule(TimerTask task, Date when, long period)
如下是我实现定时器的代码
使用androidstudio仿真时就能看到调试信息
11-12 07:17:01.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick1
11-12 07:17:03.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick2
11-12 07:17:05.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick3
11-12 07:17:07.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick4
11-12 07:17:09.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick5
11-12 07:17:11.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick6
public void scheduleAtFixedRate(TimerTask task, long delay, long period)
public void scheduleAtFixedRate(TimerTask task, Date when, long period)
使用cancel方法取消定时
public void cancel()
要注意区别的是schedule方法,声明如下。可以参考如下博客:http://blog.csdn.net/gtuu0123/article/details/6040159 博客中“下一次的执行时间点=上一次程序执行完成的时间点+间隔时间”与结论的关系我不是很理解,如果有人知道烦请回复下,一起探讨学习。
public void schedule(TimerTask task, Date when)
public void schedule(TimerTask task, long delay)
public void schedule(TimerTask task, long delay, long period)
public void schedule(TimerTask task, Date when, long period)
如下是我实现定时器的代码
- package com.ubuntu.timer;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import java.util.Timer;
- import java.util.TimerTask;
- public class MainActivity extends AppCompatActivity {
- int i = 0;
- Timer timer = new Timer(true);
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- timer.scheduleAtFixedRate(new TimerTask() {
- @Override
- public void run() {
- i++;
- Log.i("[tag]","time tick"+i);
- }
- }, 1000, 2000);
- setContentView(R.layout.activity_main);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- timer.cancel();
- }
- }
使用androidstudio仿真时就能看到调试信息
11-12 07:17:01.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick1
11-12 07:17:03.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick2
11-12 07:17:05.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick3
11-12 07:17:07.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick4
11-12 07:17:09.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick5
11-12 07:17:11.860 2918-15081/com.ubuntu.timer I/[tag]﹕ time tick6