微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > android开发之定时器实现

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)
        
        如下是我实现定时器的代码

  1.                 package com.ubuntu.timer;

  2.                 import android.support.v7.app.AppCompatActivity;
  3.                 import android.os.Bundle;
  4.                 import android.util.Log;

  5.                 import java.util.Timer;
  6.                 import java.util.TimerTask;

  7.                 public class MainActivity extends AppCompatActivity {
  8. int i = 0;
  9.                     Timer timer = new Timer(true);

  10.                     @Override
  11.                     protected void onCreate(Bundle savedInstanceState) {
  12.                         super.onCreate(savedInstanceState);

  13.                         timer.scheduleAtFixedRate(new TimerTask() {
  14.                             @Override
  15.                             public void run() {
  16.                                 i++;
  17.                                 Log.i("[tag]","time tick"+i);
  18.                             }
  19.                         }, 1000, 2000);

  20.                         setContentView(R.layout.activity_main);
  21.                     }

  22.                     @Override
  23.                     protected void onDestroy() {
  24.                         super.onDestroy();
  25.                         timer.cancel();
  26.                     }
  27.                 }

复制代码


        使用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
        

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top