【问题标题】:How do you use a TimerTask to run a thread?如何使用 TimerTask 运行线程?
【发布时间】:2012-04-05 13:47:51
【问题描述】:

我正在努力寻找 Android 上 TimerTask 函数的文档。 我需要使用 TimerTask 每隔一段时间运行一个线程,但不知道如何去做。 任何建议或示例将不胜感激。

【问题讨论】:

    标签: android multithreading timer timertask


    【解决方案1】:

    我已经实现了这样的东西,它工作正常:

        private Timer mTimer1;
        private TimerTask mTt1;
        private Handler mTimerHandler = new Handler();
    
        private void stopTimer(){
            if(mTimer1 != null){
                mTimer1.cancel();
                mTimer1.purge();
            }
        }
    
        private void startTimer(){
            mTimer1 = new Timer();
            mTt1 = new TimerTask() {
                public void run() {
                    mTimerHandler.post(new Runnable() {
                        public void run(){
                            //TODO
                        }
                    });
                }
            };
    
            mTimer1.schedule(mTt1, 1, 5000);
        }
    

    【讨论】:

    • 计划中的 1 是什么?
    • schedule 中的 1 是第一次执行计划的 TimerTask 之前的时间量(以毫秒为单位)。 5000 是后续执行之间的延迟量(以毫秒为单位)。
    • 请注意,这会在创建此类的任何线程上调用 Runnable。
    【解决方案2】:

    您使用Timer,当您使用任何schedule 方法安排TimerTask 时,它会自动为您创建一个新线程。

    例子:

    Timer t = new Timer();
    t.schedule(myTimerTask, 1000L);
    

    这会在属于该计时器的线程中创建一个运行myTimerTask 的计时器,每秒一次。

    【讨论】:

    • 上面的代码创建了一个Timer,在一秒钟后只运行一次线程中的任务。要每秒运行一次任务,请使用此重载的schedule 方法:schedule(TimerTask task, long delay, long period)。例如,timer.schedule(myTimerTask, 1000L, 2000L) 创建一个计时器,该计时器在初始延迟 1 秒后每 2 秒运行一次。这是方法的链接 [link](developer.android.com/reference/java/util/…, long, long))[link]
    • 上述评论中的链接格式错误。这是methods of Timer 的更正链接
    【解决方案3】:

    这是计时器任务的完美示例。

    Timer timerObj = new Timer();
    TimerTask timerTaskObj = new TimerTask() {
        public void run() {
           //perform your action here
        }
    };
    timerObj.schedule(timerTaskObj, 0, 15000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      相关资源
      最近更新 更多