0

アクティビティがfinish()メソッドを呼び出すまで、回転する進行状況ダイアログを表示しようとしています。finish()を呼び出す直前にprogressDialog.show()を呼び出します。スピナーは見えますが、回転していません...何か提案はありますか?

他のアクティビティのonActivityResult()で呼び出されるfinish()とものをバックグラウンドスレッドに配置しようとしたので、uiスレッドは何かをする必要はありません。デバッグ中にメインスレッド以外のスレッドで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();
}

そのコードは、アクティビティAを開始するアクティビティB内にあります。

@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スレッドとは異なるスレッドで呼び出されます。

4

1 に答える 1

0

finsih() は、アクティビティを停止して終了します。バックグラウンド スレッド* s *とはどういう意味ですか?

負荷の高い操作用のバックグラウンド スレッドを 1 つ用意し、そのスレッドの最後で 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);
    }
}
于 2012-10-02T14:36:15.130 に答える