2

続行する前に、別のスレッドが終了するまで現在のスレッドを強制的に待機させるにはどうすればよいですか。

私のプログラムでは、ユーザーはMODEからを選択AlertDialogします。このモードはゲームプレイにとって重要な構成を保持しているため、続行する前にプログラムの実行を停止したいと考えています。

        new AlertDialog.Builder(this)
    .setItems(R.array.game_modes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
            case 0:
                setMode(TRAINING_MODE);
            case 1:
                setMode(QUIZ_MODE);
            default:
                setMode(TRAINING_MODE);
                break;
            }

            //continue loading the rest of onCreate();
            contineOnCreate();
        }
    })
    .create().show();

これが不可能な場合、誰でも可能な解決策を提供できますか?

4

1 に答える 1

2

続行する前に、別のスレッドが終了するまで現在のスレッドを強制的に待機させるにはどうすればよいですか。

あなたはそうしない。

私のプログラムでは、ユーザーが AlertDialog から MODE を選択します。モードはゲームプレイの重要な構成を保持しているため、続行する前にプログラムの実行を停止したいと考えています。

いいえ、あなたはしません。メイン アプリケーション スレッドを終了して (ダイアログが表示されるように)、ユーザーが何らかの方法でダイアログを閉じた後にゲームプレイを開始したい。

アラートは独自のスレッドでロードされるため、メイン スレッドは通常どおりロードを続行できます。

いいえ、そうではありません。すべての UI はメイン アプリケーション スレッドで実行され、ダイアログが含まれます。

いいえ、onStart() コードの一部は、アクティビティがフォーカスを失ったときにアクティビティの状態を制御し、アクティビティが再びフォーカスを取得したときに再構成する必要があるためです。

その後、ユーザーが何らかの手段でダイアログを閉じるまで、それを行わないでください。

別のオプション: 「ダイアログ」UI オプションを独自のアクティビティに移動し、ユーザーがゲーム アクティビティへの途中でそれを通過するようにします。

于 2010-05-22T15:38:58.920 に答える