Android 更改文本查看值更改时的文本
单击按钮后,我尝试执行以下操作:Android 更改文本查看值更改时的文本,android,multithreading,textview,Android,Multithreading,Textview,单击按钮后,我尝试执行以下操作: case R.id.bcheckConnection: if (IPok()) { PlcState.ErrPlc = false; Constant.adressIpPlc = adresIp.getText().toString(); final ProgressDialog dialog = ProgressDialog.show(Main.this, "",
case R.id.bcheckConnection:
if (IPok()) {
PlcState.ErrPlc = false;
Constant.adressIpPlc = adresIp.getText().toString();
final ProgressDialog dialog = ProgressDialog.show(Main.this, "", "Trying to connect...");
new Thread(new Runnable() {
public void run() {
timeout = network.testConnection(Constant.adressIpPlc, 102, 20000);
dialog.dismiss();
}
}).start();
if (timeout > -1) {
PlcState.ErrPlc = false;
stanPolaczenia.setText("Connection established. Timeout = ");
stanTimeout.setText(Long.toString(timeout));
currentIp.setText(Constant.adressIpPlc);
} else {
PlcState.ErrPlc = true;
stanPolaczenia.setText("Error");
stanTimeout.setText("");
currentIp.setText(Constant.adressIpPlc);
}
} else {
Toast.makeText(Main.this, "Wrong IP", Toast.LENGTH_LONG).show();
}
break;
那么,在线程停止运行后是否可以更改文本?您可以使用来阻止当前线程,直到给定线程完成:
Thread myThread = new Thread(new Runnable() {
public void run() {
// Do something
}
});
myThread.start();
// Do some things
// and block current thread until myThread is finished
myThread.join();
// Continue execution after myThread got finished
编辑:正如@Eric在问题评论中已经提到的那样:对于你(例如)的情况,使用它似乎更有意义。它有两个事件(在UI线程上调用),因此您可以使用进度更新和任务完成时更新UI。有关
AsyncTask
示例,请参阅:为什么不使用AsyncTask
?它有onPostExecute()
,它在UI线程上运行。谢谢,我将使用AsyncTask
。这更有意义。那么,是否有可能更改onCreate方法中引用的(findViewById)值od TxtView?是的,将其作为类中的成员变量保留。这是否违背了在另一个线程上执行某些操作的全部目的?在等待myTHread
之前,您可以执行所有类型的操作。完成后调用join()
,并且确实需要完成myThread
。在我的示例中,它确实默认了线程的用途完全是肯定的。我已经更新了我的答案,使这(更)清楚。