2014-01-05 21 views
0
 builder.setPositiveButton("Yes", 
       new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        {  
         dialog.dismiss(); 

         longOperations(); 
        } 
       }); 

在上面的代碼中,每當我做dialog.dismiss()時,對話不會被當場解散,而是等待下面的方法完成。爲什麼?正如我想讓對話在我打電話時被解僱一樣。Dialog在撥打電話時不會被解僱

+1

你可以這樣嘗試......設置OnDismissListener for Dialog並在那個監聽器中做longOperation()... –

+0

@GopalRao謝謝。作品。 – tony9099

回答

1

問題是您的longOperations()正在UI線程上發生。直到onClick代碼完成執行後,對話纔會被解除。你應該把它移入一個AsyncTask。

+0

的確如此。應用OnDismissListener也有訣竅。 – tony9099

+0

@ tony9099即使您使用OnDismissListener,也不建議在UI線程中執行長時間運行的任務...考慮使用AsyncTask或通過擴展線程編寫自己的線程... –

+0

是的,但將其放入onDismissListener仍然會導致操作在UI線程上執行。取決於這些操作的時間長短,它仍然會明顯凍結您的用戶界面。 –