gpt4 book ai didi

java - Dialog.show() 是非阻塞方法吗?

转载 作者:行者123 更新时间:2023-12-02 07:46:55 24 4
gpt4 key购买 nike

我有一个按钮可以启动后台线程来完成一些工作,并且我正在尝试使用 ProgressDialog 来防止用户在完成该工作时双击该按钮(或任何其他 ui 元素)。我在按钮 onClick 代码中做的第一件事是显示进度对话框,该对话框接管屏幕。我看到的问题是,如果我快速点击此按钮,有时会在显示 ProgressDialog 之前注册两次或多次按下。这使我假设 ProgressDialog.show() 在 ProgressDialog 实际可见之前返回。

有人可以证实这一点吗?另外,有没有办法改变这种行为,或者至少得到对话框何时实际可见的通知?我看到了 Dialog.onStart() 但鉴于 javadoc,这似乎是在对话框实际可见之前调用的...

更新:虽然一般来说似乎没有解决这个问题的好方法,但以下方法适用于我的情况,即我的工作是由外部线程完成的,并且要做的工作量比单击所有按钮所需的时间更长待处理:

void myOnClickHandler() {
if(myButton.isEnabled()) {
myButton.setEnabled(False);
// do work here
// setEnabled(true) is invoked at the end of my spawned thread's run().
}
}

最佳答案

没有。

问题是您在点击事件传递之前点击了很多次。 (即在运行 ProgressDialog.show() 之前它已排队。)

关于java - Dialog.show() 是非阻塞方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com