java - 如果我切换布局计时器执行一半代码
问题描述
我需要一个计时器,它每 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 的值继续增加,我不明白为什么它也不执行第二部分
解决方案
我通过创建一个更新 UI 的函数来找到解决方案,
public static void updateUI(){
DecimalFormat formatter1 = (DecimalFormat) NumberFormat.getInstance(Locale.FRANCE);
formatter1.applyPattern("#,###");
showPuntiTotali.setText(formatter1.format(vv.getPunteggioTOT()));
}
如果我将其调用到计时器中而不是尝试直接更新 TextView,则它可以工作
推荐阅读
- gitlab - 创建要在最终合并之前运行的手动 GitLab CI 作业
- javascript - 如何使用 facebook sdk 共享用户位置?(脸书签到)
- java - 如何使用 REST 模板 Spring MVC 获取大型 JSON 而不会在 java 中出现内存问题
- .net - 配置文件 sku 是否指定了所需的单个确切或最低 .NET Framework?
- r - 网站扩展删除非“.htm”链接
- c++ - asio::io_context::run_one() 和 while()
- javascript - VanillaJS 到 VueJS 错误:Flickity 的坏元素:轮播
- r - 在一个数据框中连接多个数据框列表
- javascript - 如何安全地从任意 html 中提取文本内容
- java - java.util.Vector 中元素计数和元素数据的值不同