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 中选择一个模式,我想在继续之前停止程序的执行,因为该模式对游戏玩法具有重要的配置。

不,你没有。您想退出主应用程序线程(因此出现对话框),然后在用户以一种或另一种方式关闭对话框后开始游戏。

因为警报加载在它自己的线程中,因此允许主线程继续正常加载

不,它没有。所有 UI 都在主应用程序线程上完成,包括对话框。

否,因为某些 onStart() 代码在 Activity 失去焦点时控制 Activity 状态,并且在 Activity 重新获得焦点时需要重新配置。

然后在用户以一种或另一种方式关闭对话框之前不要执行任何操作。

另一种选择:将您的“对话框”UI 选项移动到它自己的活动中,并让用户在前往游戏活动的途中经过它。

于 2010-05-22T15:38:58.920 回答