繁体   English   中英

我认为应该显示Android AlertDialog时未显示

[英]Android alertdialog not showing when I think it should

我正在开发一个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会正确显示。

如果我不使用LayoutInflater,则layoutinflater = LayoutInflater.from(app); 显示(); 然后该应用会在浏览器上正确加载网页。

但是,如果我使用整个代码,则它看起来像进入了while(!checkConnectivity())循环,然后再显示,因为重新建立Internet连接时会短暂显示警报对话框并加载网页。

据我所知,我发现这很奇怪,因为我没有使用可能导致一个线程可以在另一个线程之前执行的线程,而这不是这种事情不能满足最基本的事情之一的情况在编程中,我的意思是,如果一条指令在另一条指令之前,则该指令之前的指令应在逻辑上进行大量执行(线程除外)。

希望有人对此有想法,可以为我提供帮助。

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

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

考虑等待连接事件 ,并使用可取消进度对话框而不是警报对话框来禁用其他UI,直到接收到该事件为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM