Android 尝试在我的应用程序中创建stopper

Android 尝试在我的应用程序中创建stopper,android,android-layout,Android,Android Layout,我创建了running应用程序,并试图在用户按下开始按钮时创建一个停止器。 但当我使用线程时,应用程序返回黑屏 ,这是我添加线程的onCreate方法 Thread t = new Thread() { public void run() { runOnUiThread(new Runnable() { @Override public void run() {

我创建了running应用程序,并试图在用户按下开始按钮时创建一个停止器。 但当我使用线程时,应用程序返回黑屏 ,这是我添加线程的onCreate方法

Thread t = new Thread() {
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    SetTextOnView();

                }
            });
        }
    };
        t.start();
SetTextOnView方法包含

public void SetTextOnView()
{
  TextView  timedisp = (TextView) findViewById(R.id.stopperdisplay);
  while(true)
  {
    timedisp.setText(String.valueOf(total));
  }



}
当我添加while语句时,问题就开始了
为什么会这样?

在线程中执行循环以不阻止ui线程+添加一些延迟以不阻止ui线程:

Thread t = new Thread() {
    public void run() {
        while (true) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    SetTextOnView();
                }
            });
            Thread.sleep(1000);
        }
    }
};
以及您的SetTextOnView:

public void SetTextOnView()
{
    TextView  timedisp = (TextView) findViewById(R.id.stopperdisplay);
    timedisp.setText(String.valueOf(total));
}

您在主(=UI)线程中执行一个无限循环。因此,应用程序开始不响应,然后显示一个黑屏。因此,如果我想创建一个塞子,当用户按下开始按钮时测量其行走时间,我如何在没有while的情况下执行该操作?您需要while,但不需要在主线程中,并且需要在每个setText之间添加一些延迟。我尝试在线程中的run方法中添加while,但它也会产生同样的结果(汉克斯的作品完美!)我不知道我需要在线程内设置延迟,因此为了我自己的理解,当我创建线程时,我需要添加延迟,原因是我不希望该线程干扰主线程(我估计它是运行oncreate方法的线程,所以…)是吗?是的,主线程(=Android中的UI线程)是管理活动、显示器、界面等生命周期的人。。。你需要尽可能多地释放此线程,才能拥有一个反应式应用程序。因此,这里的循环和延迟是为了每秒只执行一次setText,以最小化对应用程序的影响。