Android ProgressDialog关闭后如何立即执行指令/方法?
我正在尝试执行doSomeWork方法;ProgressDialog在我的方法打印中解散后;它似乎与另一种方法重叠,并且对话框未显示。如果我评论方法doSomeWork;对话框将正确显示,直到线程完成 这是我的印刷方法 他是我工作的方法: 在这里,您可以看到我如何调用这两个方法:Android ProgressDialog关闭后如何立即执行指令/方法?,android,progressdialog,Android,Progressdialog,我正在尝试执行doSomeWork方法;ProgressDialog在我的方法打印中解散后;它似乎与另一种方法重叠,并且对话框未显示。如果我评论方法doSomeWork;对话框将正确显示,直到线程完成 这是我的印刷方法 他是我工作的方法: 在这里,您可以看到我如何调用这两个方法: private OnClickListener onClickPrint = new OnClickListener() { public void onClick(final View v) {
private OnClickListener onClickPrint = new OnClickListener() {
public void onClick(final View v) {
Log.d("Button","Clicked on Print Order Button");
printing();
doSomeWork();
有人知道我怎样才能在打印时执行doSomeWork吗;将完全完成吗?您可以使用异步任务,而不是使用线程。在preexecute方法中显示进度对话框在完成打印操作后在后台方法中调用打印方法在postexecute方法中调用doSomeWork。您可以使用异步任务,而不是使用线程。在preexecute方法中显示进度对话框在完成打印操作后在后台方法中调用打印方法在postexecute方法中调用doSomeWork。您可以在android中使用该处理程序。例如,考虑下面的代码。您可以关闭处理程序中的对话框。愿它对你有用
private void printing(){
Thread receiptPrint = new Thread(new Runnable() {
@Override
public void run() {
retrieveEmails();
runOnUiThread(new Runnable() {
@Override
public void run() {
try{
//here your code executes
//after code executes do following:
uiHandler.sendEmptyMessage(0);
}catch(Exception ex){
errorHandler.sendEmptyMessage(0);
}
}
});
}
});
receiptPrint.start();
}
final Handler uiHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//here execute doSomeWork()
}
};
final Handler errorHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//do other stuff
}
};
您可以在android中使用该处理程序。例如,考虑下面的代码。您可以关闭处理程序中的对话框。愿它对你有用
private void printing(){
Thread receiptPrint = new Thread(new Runnable() {
@Override
public void run() {
retrieveEmails();
runOnUiThread(new Runnable() {
@Override
public void run() {
try{
//here your code executes
//after code executes do following:
uiHandler.sendEmptyMessage(0);
}catch(Exception ex){
errorHandler.sendEmptyMessage(0);
}
}
});
}
});
receiptPrint.start();
}
final Handler uiHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//here execute doSomeWork()
}
};
final Handler errorHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//do other stuff
}
};
这是异步任务的目的之一。它看起来与此类似:
public void onClick(final View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
//Show your progress dialog in here
super.onPreExecute();
}
@Override
protected Void doInBackground( Void... params ) {
printing();
return null;
}
@Override
protected void onPostExecute( Void result ) {
//Dismiss your progress dialog here
doSomeWork();
}
}.execute();
}
这是异步任务的目的之一。它看起来与此类似:
public void onClick(final View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
//Show your progress dialog in here
super.onPreExecute();
}
@Override
protected Void doInBackground( Void... params ) {
printing();
return null;
}
@Override
protected void onPostExecute( Void result ) {
//Dismiss your progress dialog here
doSomeWork();
}
}.execute();
}