" runOnUIThread"每次我回到活动时逐步运行

时间:2016-04-23 17:58:14

标签: java android-studio

我有一个计时器,它运行在活动的OnCreate方法上,如下所示。运行时,计时器会按预期递增。显示:

  

0时,   00:01,   00:02,   等

final Timer timer = new Timer();
        final TimerTask timerTask = new TimerTask(){
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
                        String timer = sdf.format(new Date(counter * 1000L));
                        timerText.setText(timer);
                        counter++;

                    }
                });
            }};
timer.schedule(timerTask, 0, 1000);

但是,当我重新访问活动时,计时器的间隔会增加。如果我第一次重新访问它,则间隔变为2,即

  

0时,   00:02,   00:04,   等

再次重新审视它会使间隔为3,即

  

0时,   00:03,   00:06,   等

间隔不断增加。 我推断runOnUIThread方法正在运行 n 次,其中 n 是onCreate被访问的次数,但我不知道该怎么做它

1 个答案:

答案 0 :(得分:0)

使用Timer构造函数将其指定为守护进程new Timer(true),这样如果它退出,则计时器线程也退出。 在退出cancellingonDestroy之前,请先考虑onPause计时器。