我遇到一个陌生人的问题,当我读到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);
}
答案 0 :(得分:2)
许多Android UI功能本身都是使用消息实现的,因此不要立即完成。当您致电Dialog.dismiss()
时,Android会对实际解雇的消息进行排队。此代码的作者希望确保对话框在再次显示之前被解除,因此她发布了自己的消息,该消息在Android发布之后才会运行。