如何停止ProgressDialog和Thread?

时间:2014-08-05 11:37:35

标签: java android

我是Android开发新手。我创建了一个示例地图应用程序,一旦我们输入位置代码,将在加载位置时显示ProgressDialog。显示位置后,将取消ProgressDialog,但即使在后台显示该位置后,它也会继续运行。 以下是我的代码。

Thread background = new Thread(new Runnable() {

                    public void run() {

                        try {
                            Thread.sleep(5000);
                            if(webLocation == true){
                                progressDialog.dismiss();


                            }
                              } catch (InterruptedException e) {

                              e.printStackTrace();

                    }

                }
                });
            background.start();

            }

一旦显示位置,任何人都可以给我一个停止ProgressDialog的解决方案。我无法了解这个解决方案,如果有人有一些想法或解决方案,它对我有帮助。

2 个答案:

答案 0 :(得分:2)

尝试替换

 if(webLocation = true) 

通过

 if(webLocation == true) or if (webLocation)

您基本上将值true分配给变量webLocation。您应该进行比较,因此请使用==

你应该更好地使用AsyncTask类,而不是使用5秒的睡眠线程(这是硬编码值)。

1)onPreExecute()执行以下progressDialog.show()

2)以doInBackGround方法获取位置。在调用thar onPostExecute之后,在此方法中执行以下操作

   if (progressDialog.isShowing())
       progressDialog.dismiss();

答案 1 :(得分:0)

试试这个

   Thread background = new Thread(new Runnable() {

                        public void run() {

                            try {
                                Thread.sleep(5000);
    } 
catch (InterruptedException e) {

                                  e.printStackTrace();

                        }
    runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                        .
            // TODO Auto-generated method stub
        enter code here
         if(webLocation = true){
                                    progressDialog.dismiss();


                                }
                            }
                        });



                    }
                    });
                background.start();

                }