首页 > 解决方案 > 如果我切换布局计时器执行一半代码

问题描述

我需要一个计时器,它每 5 秒将一个变量增加 1,然后我更新一个 TextView,其中报告了该变量的总数,我尝试以不同的方式设置计时器,但每次我尝试更改布局(我使用 Intent)然后返回到那个主,继续增加变量值的代码有效,但是更新文本视图的代码没有..

    private void startTimer(){
    timer = new Timer();
    timerTask = new TimerTask() {
        public void run() {
            handler.post(new Runnable() {
                public void run(){
                    x = x + 1;

                    DecimalFormat formatter1 = (DecimalFormat) NumberFormat.getInstance(Locale.US);
                    formatter1 .applyPattern("#,###");
                    showTotal.setText(formatter1.format(x));
                }
            });
        }
    };
    timer.schedule(timerTask, 5000, 5000);
}

可能是什么原因?

我试图创建一个按钮来强制更新 textview 并且变量 x 的值继续增加,我不明白为什么它也不执行第二部分

标签: javaandroid

解决方案


我通过创建一个更新 UI 的函数来找到解决方案,

    public static void updateUI(){
    DecimalFormat formatter1 = (DecimalFormat) NumberFormat.getInstance(Locale.FRANCE);
    formatter1.applyPattern("#,###");
    showPuntiTotali.setText(formatter1.format(vv.getPunteggioTOT()));
}

如果我将其调用到计时器中而不是尝试直接更新 TextView,则它可以工作


推荐阅读