как ждать завершения URL-вызова - PullRequest
0 голосов
/ 14 февраля 2011

У меня есть этот (прикрепленный) код, который отлично работает на всех AVD, которые я создаю с помощью eclipse. Он вызывает файл php на веб-сайте. Сценарий php подает xxx, когда сделан вызов http://somebody.me.uk/testingphp/signup.php?user=xxx. Сценарий php не дает ответа, и при этом я не хочу его, материал в цикле кода ниже - то, что я хочу захватить в файле php. В реальном мире телефон Nexus One с этим кодом не может связаться с PHP-скриптом. Пытаясь решить проблему, я вставил строки кода, создающие тосты между строками кода в блоке try. Внезапно приложение начинает работать, и php файлы xxx. Я предполагаю, что это связано с введением задержки на нексусе, пока он показывает тосты, и дает возможность коммуникациям работать. Любые идеи, как решить проблему (без использования тостов) Спасибо.

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 Ответ

2 голосов
/ 14 февраля 2011

// определить эти две переменные в вашей деятельности

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-адрес не будет завершен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...