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只能被放置一

     

     

  • 相关阅读:
    关于在ubuntu12.04图形界面下不能从root用户直接登录的问题
    error: stray '357' in program
    关于gcc -o 的使用问题
    如何解决程序退出重启后不能绑定端口的问题?
    使用Ubuntu12.04登陆账户时,输入密码是正确的,但是图形界面闪一下后就又回到登陆页面了
    如何在linux系统中设置严密的密码策略(译文)
    sqlite3数据库归纳
    Bing地图切片原理
    CSS技巧
    jQuery.extend方法和开发中变量的复用
  • 原文地址:https://www.cnblogs.com/fuyunmomo/p/4272743.html
Copyright © 2011-2022 走看看