【发布时间】:2021-11-14 08:52:43
【问题描述】:
在下面给出的代码部分中,我在单击按钮时运行了一个线程。一开始,线程会将文本设置到textView,然后它会休眠6秒。但是,实际上在单击按钮时,首先,线程休眠 6 秒,然后将文本设置为 textView。现在,为什么会出现这种语句执行流程不匹配的情况?
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
button = findViewById(R.id.button);
textView = findViewById(R.id.textView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button.setEnabled(false);
runthread();
}
});
}
private void runthread() {
final String s1 = editText.getText().toString();
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(s1);
button.setEnabled(true);
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
});
}
}
【问题讨论】:
标签: java android multithreading