【问题标题】:Android studio Timer task crashes app on startupAndroid Studio Timer 任务在启动时使应用程序崩溃
【发布时间】:2020-04-10 00:49:25
【问题描述】:
public class MainActivity extends AppCompatActivity {



private TextView timerTextView;
private Button pauseStartBtn;
private Button resetBtn;
private Button productiveBtn;
private CountDownTimer countDownTimer;


private Boolean run;
Timer timer = new Timer();
private long timeMS = 0;
private long seconds = 0;
private long minutes = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    timerTextView = findViewById(R.id.timerTextView);
    pauseStartBtn = findViewById(R.id.pauseStartBtn);
    resetBtn = findViewById(R.id.resetBtn);
    productiveBtn = findViewById(R.id.productiveBtn);

    startUp();


}

TimerTask taskUp = new TimerTask() {
    @Override
    public void run() {
        if (run){
            timeMS++;
            seconds = 0;
            minutes = timeMS / 60;
            if (timeMS < 60) {
                seconds = timeMS;
            } else seconds = timeMS - minutes * 60;

            String form = String.format("%02d:%02d", minutes, seconds);

            timerTextView.setText(form);

        }
    }
};

public void startUp(){
    timer.scheduleAtFixedRate(taskUp,1000,1000);// change period back to 1000
}

}

无论如何,这就是整个代码,每当我运行应用程序时它会立即崩溃。

如果重要的话,我正在尝试创建的应用程序是一种计时器,当我按下按钮时,它会使用我从计时器获得的时间来运行计时器,并且一旦计时器达到 00:00 它继续作为计时器,我将其转换为计时器,依此类推。

我仍处于早期阶段,但我正在尝试使用 TimerTask 创建一个基本的计时器,但由于某种原因,当我运行应用程序时它会立即崩溃。非常感谢任何帮助!

编辑:

原木猫

2020-04-09 18:25:46.428 5761-5870/? D/PowerKeeper.AppBgIdle:setUidState,uid = 10298 允许 = false 2020-04-09 18:25:50.569 4911-4911/? W/AppStateLoggerT: type=1400 audit(0.0:66626): avc: denied { read } for name="osrelease" dev="proc" ino=6324986 scontext=u:r:untrusted_app_27:s0:c165,c256,c512, c768 tcontext=u:object_r:proc:s0 tclass=文件许可=0

【问题讨论】:

  • 请显示错误日志。
  • 请用 logcat 编辑您的帖子!
  • 我在 logcat 中进行了编辑,不确定这是否是适当的格式。如果不清楚并且有更好的发布方式,请让我知道。

标签: android timer crash timertask chronometer


【解决方案1】:

TimerTask 回调在主 (UI) 线程外执行,而像 setText 这样的 UI 调用需要在 UI 线程上。您应该将对 setText 的调用封装在对 timerTextView.post(...) 的调用中,以便在 UI 线程上调用它。

【讨论】:

  • 你能改写一下这个,让一​​个几乎绝对的初学者都能理解吗?我对整个编程很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多