如何等待URL调用完成

时间:2011-02-14 12:44:40

标签: android url

我有这个(附加的)代码,它完全适用于我用eclipse创建的所有AVD。它在网站上调用一个php文件。当脚本http://somebody.me.uk/testingphp/signup.php?user=xxx发出时,php脚本会将xxx文件存档。 php脚本没有给出响应也不想要一个,下面代码循环中的东西就是我想要在php文件中捕获的内容。在现实世界中,使用此代码的nexus one phone无法联系php脚本。在尝试解决问题时,我插入了代码行,在try块中的代码行之间创建了toast。突然,应用程序开始工作,PHP文件xxx。我认为这是由于在显示祝酒的时候引起了对nexus的延迟,并为通信提供了工作的机会。任何想法如何解决问题(不使用敬酒)谢谢。

private boolean hasSolution(){
        if (cells.solve()) {                
            // send to web site for QA analysis.
            String urlString = "http://somebody.me.uk/testingphp/signup.php?user=" ;
            for (int j=0; j<9; j++) {
                for (int i=0; i<9; i++) {
                    urlString += cells.getSolution(i, j);
                }// end for i
            }// end for j
    try {
                URL url = new URL(urlString);
                URLConnection conn = url.openConnection();                  
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                rd.close();
            }catch (IOException e) {Toast.makeText(app.this, "io error", Toast.LENGTH_SHORT).show();}

            return true;
        }// end if
        return false;
    }

1 个答案:

答案 0 :(得分:2)

//在您的活动中定义这两个变量

private ProgressDialog pDialog = null;  
private Runnable submittingScore;


submittingScore = new Runnable(){
@Override
public void run() 
{
 try {
      do your task here
     } 

 catch (Exception e) {
pDialog.dismiss();
// TODO Auto-generated catch block
                                    e.printStackTrace();
    }
  }

 };


 Thread thread =  new Thread(null, submittingScore, "MultibreifsBackground");
     thread.start();
pDialog = ProgressDialog.show(postServer.this,    
 "Please wait...", "Submitting Scores...", true);

pDialog.dismiss放入所有catch方法中。现在,当您调用URL时,它将显示处理,直到URL完成