在暂停主线程执行时在android中显示定时自定义对话框

时间:2012-01-31 06:59:23

标签: android multithreading sleep timertask customdialog

我正在我的应用程序中显示一个自定义对话框,该对话框停留一小段时间(比如2秒)然后消失。我从主要活动中调用此自定义对话框。  我希望我的调用活动暂停,直到自定义对话框消失。问题是,在对话框被解除后,活动代码 总是被执行,同时显示对话框。

我试过显示对话框,睡了2秒然后解除它,这是无效的。解除对话框后的活动代码正在执行。

cust_dlg.show();
Thread.sleep(2000);
cust_dlg.dismiss();

我还尝试将对话框放在计时器任务中,该任务也失败

        final Timer t = new Timer();
        cust_dlg.show();
        t.schedule(new TimerTask() {
        public void run() {
        cust_dlg.dismiss();
        t.cancel();
        }
        }, 500);

我还尝试在线程中使用自定义对话框进行简单线程,并在主活动中同时进行睡眠,这会导致异常并强制关闭。

有人请告诉我在显示自定义对话框时暂停主要活动的方法,以便自定义对话框关闭后的代码 NOT 执行。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用处理程序

        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
             public void run() { 


        AlertDialog.Builder builder = new AlertDialog.Builder(RBLQuizSpiel.this);
        if (aktuellGeloest == true){

        builder.setMessage(R.string.quiz_neu)
                .setTitle(R.string.quiz_glueckwunsch)
                .setPositiveButton(R.string.quiz_ja, dialogClickListener)
                .setNegativeButton(R.string.quiz_nein, dialogClickListener).show();
        } else {
            builder.setMessage(R.string.quiz_neu)
            .setTitle(R.string.quiz_schade)
            .setPositiveButton(R.string.quiz_ja, dialogClickListener)
            .setNegativeButton(R.string.quiz_nein, dialogClickListener).show();

        }
        }
}, 1500);

此后不再有代码。

1500 = ms

您需要在Clicklistner中设置以下代码的执行。 Android是事件驱动的操作系统。对话框将被放入消息qeue中,您的程序将继续...