我想显示此对话框,而线程试图建立连接,但是当我按下启动此方法的按钮时,该对话框将不会显示。
public void add_mpd(View view) {
dialog = ProgressDialog.show(MainActivity.this, "", "Trying to connect...");
new Thread(new Runnable() {
public void run() {
try {
String child;
EditText new_mpd = (EditText) findViewById(R.id.new_mpd);
child = new_mpd.getText().toString();
mpd = new MPD(child);
children.get(1).add(child);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MPDConnectionException e) {
e.printStackTrace();
}
}
}
).start();
adapter.notifyDataSetChanged();
dialog.dismiss();
}
它不会显示,因为(阻塞)工作是在另一个线程中完成的。这意味着start()
类的Thread
方法将不会阻塞。
Ergo,您显示对话框,启动线程并且对话框立即被关闭(并因此关闭)。
在dismiss()
方法的末尾将呼叫置于run()
,它应该可以正常工作。
以上内容可能对您有用,但您不应直接使用Thread
类。周围有包装纸,使用起来更舒适。
在Android中,如果要在UI线程上进行长期工作,则应使用AsyncTask
。
另外,要以卢卡斯所说的为基础,可以看一下这个例子。
AsyncTask
http://www.helloandroid.com/tutorials/using-threads-and-progressdialog
}