Android 为什么线程先进入睡眠状态,然后在活动中设置TextView?

Android 为什么线程先进入睡眠状态,然后在活动中设置TextView?,android,async-await,Android,Async Await,以下是android first activity中的结果集代码,用户界面有3个EditText和3个按钮或TextView。我需要在第二个文本视图中设置值以显示总分,总分是从前3个EditText计算出来的,在main方法中睡眠10秒而不使用线程,但我在进入睡眠10秒后得到操作ie,并立即显示总分文本视图,并导航到代码中提到的下一个活动ie,所以设置总分后如何等待10秒 EditText etMarkOne,etMarkTwo,etMarkThree; TextView tvTMark

以下是android first activity中的结果集代码,用户界面有3个EditText和3个按钮或TextView。我需要在第二个文本视图中设置值以显示总分,总分是从前3个EditText计算出来的,在main方法中睡眠10秒而不使用线程,但我在进入睡眠10秒后得到操作ie,并立即显示总分文本视图,并导航到代码中提到的下一个活动ie,所以设置总分后如何等待10秒

  EditText etMarkOne,etMarkTwo,etMarkThree;
  TextView tvTMarks,tvTotal,tvGrade;
  int m1,m2,m3,Tmarks;

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

  private void eventHandlingonViewControls(){
      tvTotal.setOnClickListener(this);
  }

  private void inilizeViewControls() {
     etMarkOne = (EditText) findViewById(R.id.etMarkOne);
     etMarkTwo = (EditText) findViewById(R.id.etMarkTwo);
     etMarkThree = (EditText) findViewById(R.id.etMarkThree);
     tvGrade = (TextView) findViewById(R.id.tvGrade);
     tvTMarks = (TextView) findViewById(R.id.tvTMarks);
     tvTotal= (TextView) findViewById(R.id.tvTotal);
  }

@Override
public void onClick(View v) {
    m1 = Integer.parseInt(etMarkOne.getText().toString());
    m2 = Integer.parseInt(etMarkTwo.getText().toString());
    m3 = Integer.parseInt(etMarkThree.getText().toString());
    Tmarks = m1 + m2 + m3;
    tvTMarks.setText(""+Tmarks);

    Thread.sleep(2000);
    Intent i = new Intent(MainActivity.this,ResultActivity.class);
    i.putExtra("Tmarks",Tmarks);
    i.putExtra(" m1", m1);
    i.putExtra(" m2", m2);
    i.putExtra(" m3",m3);
    startActivityForResult(i,1);
}
}

您可以在postDelayed中使用处理程序处理任务10000意味着10秒=10000毫秒:

Handler handler = new Handler();

// do work before delay  here
...

handler.postDelayed(new Runnable() {
    public void run() {
        // do work after delay here
        ...
       }
   }, 10000);

请格式化代码。它懒得发布无法阅读的代码,并发送一条消息,说明问题不值得尝试回答。如果不使用线程单击,则需要延迟线程睡眠