我正在尝试显示旋转进度对话框,直到我的活动调用方法finish()。我在调用finish()之前调用progressDialog.show()。我可以看到旋转器,但它没有旋转......有什么建议吗?
我试图在后台线程中将finish()和其他活动的onActivityResult()中调用的东西放在一起,所以ui-thread不应该做某事。 当我正在调试并且在主线程之外的另一个线程上的finish()方法等待时,进度对话框正在旋转...当我更进一步并调用finish()方法时,进度对话框停止旋转并且1-2秒后,活动消失。
所以我唯一的建议是,finish()方法是不移动进度对话框的原因......是否有可能让它移动?
提前致谢!
编辑: 该代码在活动A内部完成。
private void goBack() {
setResult((mReopen) ? Constants.RESULT_REOPEN : RESULT_OK);
if (mReopen) {
mProgressDialog.show();
}
new Thread(new Runnable() {
@Override
public void run() {
finish();
}
}).start();
}
该代码位于活动B内,开始活动A.
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {
if (requestCode == Constants.REQUEST_CODE_OPEN_EMAG) {
new Thread(new Runnable() {
@Override
public void run() {
switch (resultCode) {
case Constants.RESULT_REOPEN:
mReopen = true;
openEmag(mLastOpenedEmagId, false, false);
break;
default:
mReopen = false;
break;
}
}
}).start();
}
}
正如您所看到的,所有内容都在不同的线程中被调用,而不是ui-thread。
答案 0 :(得分:0)
finsih()停止您的活动并退出。 你是什么意思背景线程* s *?
你应该有一个后台线程用于繁重的操作,并在该线程的末尾调用finish()。
像这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == yourCode) {
if (resultCode == RESULT_OK) {
//... Do dialog.show() here
new Thread(){
public void run() {
//... Your stuff here
finish();
};
}.start();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}