2013-11-15 98 views
0

警告對話框是可見的,直到startVibrate()方法,完成了它的任務,但我想盡快清除它作爲點擊確定AlertDialog仍然可見evenafter

AlertDialog.Builder builder = new Builder(VibrationActivity.this); 
      builder.setCancelable(false); 
      builder.setTitle("Vibration Test"); 
      builder.setMessage("Your device will vibrate now."); 
      builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); //Dismiss the dialog 
        startVibration();  //Start the test 
       } 
      }); 
      builder.show(); 

    public void startVibration(){ 
     for (int i = 1; i <= 5; i++) { 
     try { 
       vibrator.vibrate(500); // Vibration time in milliseconds 
       Thread.sleep(750); // Interval between two vibration 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
    } 
+0

然後開始在單獨的線程 – r4jiv007

+0

該方法@ r4jiv007單獨的線程也沒有幫我 – VishalKale

+0

試着打電話給你在的AsyncTask – r4jiv007

回答

1

您應該在您的活動中啓動AlertDialog。你的線程應該通過一個處理程序向Activity發送一條消息,以知道何時顯示和關閉你的對話框。

+0

我完成後,已經使用處理程序,這是工作,但我不想使用處理程序,因爲它會導致內存泄漏,因爲我的應用程序有點沉重,任何泄漏將使更多的區別 – VishalKale

+0

這聽起來像一個設計問題。如果你泄漏了這些東西,處理程序應該只是調度/使用消息,那麼這就是你的應用程序不是處理程序本身的更大問題。 – JoxTraex

+0

如果我只使用一個消息具有針對該特定處理程序的消息,並且如果我們將該消息發送給該處理程序並且不在任何地方引用它,它是否會泄漏? – VishalKale

0

首先startVibrate方法調用則取消對話,更好的呼叫取消而不是解僱。

+0

方法我想盡快關閉該對話框,用戶點擊確定不是startVibrate() – VishalKale