代码之家  ›  专栏  ›  技术社区  ›  PPavesi

试图关闭线程内的ProgressDialog时出现黑屏

  •  0
  • PPavesi  · 技术社区  · 4 年前

    第一个问题是ProgressDialog没有显示。然后我读到我应该创建一个线程。我创建了线程,它工作了。但现在我不能忽略这个对话。应用程序崩溃,屏幕变黑。

    xGrava.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
            PD.setContentView(R.layout.ipp_load);
            PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            Thread mThread = new Thread() {
                @Override
                public void run() {
                    if (ValidaDados() == true) {
                        if (GravaDados() == true) {
                            xGrava.setVisibility(View.GONE);
                            PD.dismiss();
                        }
                    }
                }
            };
            mThread.start();
        }
    });
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   Ahmed    4 年前

    正如我看到的,我想这是安卓的。 通常,当需要运行一个较长的进程时,我们会使用线程,我们不希望视图UI被卡住,因为它是一个正在运行的UI线程。

    因此,要回答这个问题,请确保在视图上调用任何操作时,在“RunUnuithRead”上执行该操作

    例如,在这里,一旦线程完成“长”任务,您可以执行以下操作:

    xGrava.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
                PD.setContentView(R.layout.ipp_load);
                PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
                Thread mThread = new Thread() {
                    @Override
                    public void run() {
                        if (ValidaDados() == true) {
                            if (GravaDados() == true) {
                                runOnUiThread(new Runnable() {
                                              @Override
                                               public void run() {
                                                    xGrava.setVisibility(View.GONE);
                                                    PD.dismiss();
                                               }
                                           }
                                 );
                            }
                        }
                    }
                };
                mThread.start();
            }
        });
             
    
    推荐文章