我在this中使用过建议,但我还有同样的问题。 感谢我的朋友建议使用AsyncTask,但它不适用于我。 什么? 这是我的代码:
DBAsyncTask dba = new DBAsyncTask(this, xmlCommand);
dba.inProcess = true;
dba.execute("");
while (dba.inProcess) {
try {
Thread.sleep(200);
println("wwwwait");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class DBAsyncTask extends AsyncTask<String, Void, String> {
public boolean inProcess;
public DBAsyncTask(ExirCommandRunner commandRunner,XmlNode xmlCommand) {
this.commandRunner = commandRunner;
this.xmlCommand = xmlCommand;
}
@Override
protected void onPostExecute(String result) {
ExirDebugger.println("onPostExecute");
}
@Override
protected void onPreExecute() {
showProgress();
}
@Override
protected String doInBackground(String... params) {
///my process here
closeProgress();
return null;
}
任何人都可以帮助我吗?
答案 0 :(得分:3)
Thread.sleep()
阻止UI线程,因此无法运行进度对话框。删除它和inProcess
轮询机制。此外,使用异步任务和进度对话框还有很多references。
答案 1 :(得分:1)
我在AsyncTask中解释了ProgressDialog的详细用法及其解决方案: https://stackoverflow.com/a/17527979/1943671
答案 2 :(得分:1)
应该是这样的:
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(activityContext);
pDialog.setCancelable(false);
pDialog.setMessage("Please Wait..");
pDialog.show();
}
和
protected void onPostExecute(String file_url)
{
if(pDialog.isShowing())
{
pDialog.cancel();
}
}