Android Dialog使用处理程序解除

时间:2013-03-27 06:23:53

标签: android-dialog

我遇到一个陌生人的问题,当我读到android的GlobalAction源代码时,我发现它会启动一个对话框,但它会添加一个判断,判断这个对话框是否已经显示,如果之前显示的话,它会被解雇,然后显示它。陌生的事情是它解雇对话框,而不是使用Handler发送消息来创建和再次显示对话框,我无法理解为什么它需要发送处理程序消息,我认为它只是调用对话框解除功能。然后调用show功能,没问题。评论说:“显示延迟,以便解除之前的对话框完成”,但我也无法理解其含义,请有人帮我解释一下,谢谢很多。

if (mDialog != null) {
            mDialog.dismiss();
            mDialog = null;
            // Show delayed, so that the dismiss of the previous dialog completes
            mHandler.sendEmptyMessage(MESSAGE_SHOW);
} 

1 个答案:

答案 0 :(得分:2)

许多Android UI功能本身都是使用消息实现的,因此不要立即完成。当您致电Dialog.dismiss()时,Android会对实际解雇的消息进行排队。此代码的作者希望确保对话框在再次显示之前被解除,因此她发布了自己的消息,该消息在Android发布之后才会运行。