[英]Why Thread don't run?
添加断点,我可以看到下面的线程没有执行。 我使用HTTP通过viacep.com网络服务对ZIPCode进行了压缩搜索,返回了JSON。
if (code.length() == 8) {
final ProgressDialog dialog = ProgressDialog.show(Inicial.this, "",
"Loading ZipCode", true);
dialog.show();
new Thread() { // last BreakPoint stop here
public void run() {
try {
//This code isn't running
String url = "https://viacep.com.br/ws/" + code + "/json";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
final HttpResponse resposta = httpClient.execute(httpPost);
runOnUiThread(new Runnable() {
public void run() {
try {
JSONObject obj = new JSONObject(EntityUtils.toString(resposta.getEntity()));
EditText endereco = (EditText) findViewById(R.id.cadEndereco);
EditText compl = (EditText) findViewById(R.id.cadComplemento);
EditText bairro = (EditText) findViewById(R.id.cadBairro);
EditText cidade = (EditText) findViewById(R.id.cadCidade);
EditText uf = (EditText) findViewById(R.id.cadUF);
endereco.setTag(obj.getString("logradouro"));
compl.setText(obj.getString("complemento"));
bairro.setText(obj.getString("bairro"));
cidade.setText(obj.getString("localidade"));
uf.setText(obj.getString("uf"));
} catch (IOException | JSONException e) {
e.printStackTrace();
}
dialog.dismiss();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
};
}
因此,“加载对话框”的显示时间未定义,这是因为dialog.dismiss()位于runOnUIThread上。 有人知道为什么这不起作用吗?
您忘记调用.start()了:
new Thread() { // last BreakPoint stop here
//
}.start;
^^^^^^^
我将线程加载到变量t中,然后可以在其上运行它的成员方法,例如start(),join(),sleep,yield,interrupt等。
Thread t = new Thread() { // last BreakPoint stop here
public void run() {
try {
//This code isn't running
String url = "https://viacep.com.br/ws/" + code + "/json";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
final HttpResponse resposta = httpClient.execute(httpPost);
runOnUiThread(new Runnable() {
public void run() {
try {
JSONObject obj = new JSONObject(EntityUtils.toString(resposta.getEntity()));
EditText endereco = (EditText) findViewById(R.id.cadEndereco);
EditText compl = (EditText) findViewById(R.id.cadComplemento);
EditText bairro = (EditText) findViewById(R.id.cadBairro);
EditText cidade = (EditText) findViewById(R.id.cadCidade);
EditText uf = (EditText) findViewById(R.id.cadUF);
endereco.setTag(obj.getString("logradouro"));
compl.setText(obj.getString("complemento"));
bairro.setText(obj.getString("bairro"));
cidade.setText(obj.getString("localidade"));
uf.setText(obj.getString("uf"));
} catch (IOException | JSONException e) {
e.printStackTrace();
}
dialog.dismiss();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
};
t.start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.