2014-09-10 48 views
-1

在我的代碼中,我想檢查經度和緯度值。如果值爲空,代碼將檢查15秒。如果收到價值,while循環會中斷並顯示「You win」。如果它們仍然是空的,它應該在15秒後顯示「gps中的錯誤」。 問題是代碼正在等待完美,但進度條沒有顯示在屏幕上,因爲屏幕在等待時間內卡住了。 15秒後屏幕空閒。請告訴我如何解決這個問題。謝謝使用JAVA/Android在循環中等待X時間

  @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getBaseContext(), longitude.getText(), Toast.LENGTH_LONG).show(); 
       Toast.makeText(getBaseContext(), latitude.getText(), Toast.LENGTH_LONG).show(); 
       pBar = new ProgressDialog(oproprietor.this); 
       pBar.setCanceledOnTouchOutside(false); 
       pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
       pBar.setMessage("Waiting 15 seconds"); 
       pBar.show(); 

       long t= System.currentTimeMillis(); 
       long end = t+15000; 
       while(System.currentTimeMillis() < end) { 


         if(!longitude.getText().equals("") || !latitude.getText().equals("")){ 

          pBar.dismiss(); 
           break; 
           } 
         else continue; 


       } 
       if(longitude.getText().equals("") || latitude.getText().equals("")){ 

          pBar.dismiss(); 
         Toast.makeText(oproprietor.this, "Error in gps", Toast.LENGTH_LONG).show(); 



         } 
       else if(!longitude.getText().equals("") || !latitude.getText().equals("")){ 

        pBar.dismiss(); 
        Toast.makeText(oproprietor.this, "You win", Toast.LENGTH_LONG).show(); 
         } 
      } 

     }); 
+0

我真的不知道是什麼人認爲'// TODO自動生成方法stub'評論,他們的IDE生成是。他們是否擔心如果他們拿出來,代碼會破壞?他們只是看不到它? – 2014-09-10 16:12:06

+0

我個人認爲它使代碼看起來更清潔,但這只是我的看法。 – 2014-09-10 16:14:24

回答

0

嘗試在一個線程中運行它。

//注意:將ProgressDialog進度聲明爲類中的字段。

progress = ProgressDialog.show(this, "dialog title", 
    "dialog message", true); 

new Thread(new Runnable() { 
    @Override 
    public void run() 
    { 
    // do the thing that takes a long time 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() 
     { 
     progress.dismiss(); 
     } 
    }); 
    } 
}).start(); 
+0

哪裏將是while循環和break或IF語句..你能否請在我的代碼中編輯謝謝 – user3118495 2014-09-10 15:55:11

+1

參見'//做一件需要很長時間的事情'用你的循環替換這個評論 – Ben 2014-09-10 15:58:44

2

由於這是Android的,我肯定會建議在一個線程使用AsyncTaskThis question有關於如何安全地執行此操作的所有相關詳細信息。使用Java線程/ Runnable在您從外部線程與UI線程進行交互時,在android中引入了一些UI問題。