1

遇到一个奇怪的问题,在阅读android GlobalAction源码的时候,发现它会启动一个对话框,但是它添加了一个判断,判断这个对话框是否已经显示,如果之前显示过,它将被关闭并然后显示它。奇怪的是它关闭对话框,而不是使用处理程序发送消息来再次创建和显示对话框,我不明白为什么它需要发送处理程序消息,我认为它只是调用对话框关闭函数.然后调用show函数,没问题。评论说:“显示延迟,以便上一个对话框的关闭完成”,但我也无法理解含义,请有人帮我解释一下,非常感谢。

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

1 回答 1

2

许多 Android UI 功能本身是使用消息实现的,因此不会立即完成。当您调用 时Dialog.dismiss(),Android 会排队执行实际解除操作的消息。此代码的作者希望确保对话框在再次显示之前实际上已关闭,因此她发布了自己的消息,直到 Android 发布的消息之后才会运行。

于 2013-03-27T06:27:02.063 回答