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

     

     

  • 相关阅读:
    Sqlmap使用详解
    WEB漏洞学习手册
    量压形态的使用方法
    sql执行过程及常见优化手段
    什么是JavaScript 函数作用域
    git http 拉取代码 自动输入用户名和密码
    PHP 报文件写入无权限 file_put_contents failed to open stream: Permission denied in xxxxx on line 2
    记一次 解决PHP Linux服务器报 打开文件数过多的异常
    微信开发 坑 记录帖
    python 安装 cv2 注意事项 填坑 opencv-python 找不到指定的模块
  • 原文地址:https://www.cnblogs.com/fuyunmomo/p/4272743.html
Copyright © 2011-2022 走看看