gpt4 book ai didi

java - Android 警报对话框在我认为应该显示的时候没有显示

转载 作者:行者123 更新时间:2023-12-01 13:37:59 25 4
gpt4 key购买 nike

我正在开发一个Android应用程序,我想检查是否有互联网连接,如果没有,则显示警告消息,当再次有互联网连接时,加载某个网址。

可以说,显示消息和检查是否有互联网连接都可以工作......但不能分开。

我的意思是我有以下代码:

      if (!checkConnectivity())
{

browser.stopLoading();


LayoutInflater layoutinflater = LayoutInflater.from(app);
final View textEntryView;


textEntryView = layoutinflater.inflate(R.layout.exitdialog, null);
new AlertDialog.Builder(app)
.setView(textEntryView)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit")
.setNegativeButton("CANCEL", null)
.show();



while (!checkConnectivity())
{

}

browser.loadUrl(url);


}

如果我不使用 while (!checkConnectivity()) 到 browser.loadUrl(url);然后 AlertDialog 正确显示。

如果我不使用from LayoutInflaterlayoutinflater = LayoutInflater.from(app);以显示();然后应用程序在浏览器上正确加载网页。

但是,如果我使用整个代码,它看起来会在显示之前进入 while (!checkConnectivity()) 循环,因为重新稳定互联网连接时会发生的情况是短暂显示警报对话框并显示网页已加载。

我觉得这很奇怪,因为据我所知,我没有使用可能导致一个线程在另一个线程之前执行的线程,而事实并非如此,这个东西不满足其中之一编程中最基本的事情,我的意思是,如果一条指令在另一条指令之前,则前面的指令应该在逻辑上充分执行(线程除外)。

希望有人对此有想法并可以帮助我。

最佳答案

您的 while 循环会阻塞 UI 线程,并且对话框没有机会显示。

忙循环轮询条件也是一个很大的危险信号。

考虑等待connectivity event ,并使用可取消的 progress dialog而不是使用警报对话框来禁用其他 UI,直到收到事件。

关于java - Android 警报对话框在我认为应该显示的时候没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113348/

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