zoukankan      html  css  js  c++  java
  • Android Timer与TimerTask

    一、概览

        Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。
        TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。

    二、Timer与TimerTask的相关操作

       通过Timer与TimerTask相结合实现的定时器功能。具体实现过程如下:

         第一步,得到Timer的实例化对象

              Timer timer= new Timer() ;

         第二步,实例化TimerTask对象 

             TimerTask timerTask = new TimerTask(){

                   publicvoid run(){

                       //Doing something

                   }

             }

      实例化TimerTask对象的时候,需要重写它的run()方法,然后在这个方法体内增加需要执行的具体操作。比如  输出一句话,发送一个消息之类的。

        第三步,启动定时器

             Timer.schedule(TimerTask, delay, period) ;

             这样创建并启动一个定时器的工作就完成,但是在实际使用的过程中,可能会需要一些其他方面的操作手段。

             因为在项目程序运行过程中,某个时刻定时器的参数被修改,比如delay,period。为了及时的使用最新的正确的数据,就需要对已经存在的定时器进行关闭并且使用新的参数重新创建并启动。

             第一步,取消TimerTask,并在定时器Timer队列中将其删除。

             If(timerTask == null){

                timerTask .cancel() ;

           }

          第二步,重新启动定时器

            If(timerTask!= null){

               timerTask = new TimerTask

                  public void run(){ 

           //do something

     }

       ) ;

          }

           timer.schedule(timeTask,delay,period) ;

           值得注意的地方是被执行了cancle()方法之后的TimerTask,在重新启动定时器的时候,必须重新实例化TimerTask才OK,不然会报“java.lang.IllegalStateException:TimerTask is scheduled already”的错误。每个定时器任务TimerTask只能被放置一

     

     

  • 相关阅读:
    loj#2049. 「HNOI2016」网络(set 树剖 暴力)
    创建多个Oracle数据库及相应的实例
    [置顶] lua 进阶3--lua文件中调用C++函数
    android 设置Button或者ImageButton的背景透明 半透明 透明
    struts2 18拦截器详解(七)
    《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记
    ios7下不能录音问题解决
    360 2013校园招聘笔试题(含参考答案)
    【MFC三天一个游戏】之 局域网黑白棋
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/fuyunmomo/p/4272743.html
Copyright © 2011-2022 走看看