2014-05-19 48 views
1

如下面的代碼所示,如​​果Progressdialoge存在,我想成立一​​個新的消息給它,並在3秒後關閉它後解僱ProgressDialog。如何在特定的時間

在運行時,會發生什麼情況是,舊消息保持設置爲progressdialog並持續3秒,然後progressdialog關閉而未設置新消息。有什麼建議麼?

代碼:

if ((location != null) && (mProgreeDialoge != null)){ 
      mProgreeDialoge.setMessage(PROGRESS_DIALOGUE_MSG01); 
      try { 
       Thread.sleep(3000); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

更新

if ((location != null) && (mProgreeDialoge != null)){ 
      mProgreeDialoge.setMessage(PROGRESS_DIALOGUE_MSG01); 
      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 
        mProgreeDialoge.dismiss(); 
       } 
      }, FREEZE_PROGRESS_DIALOGUE_TIME); 
+1

可能重複:http://stackoverflow.com/questions/3947080/progressdialog-does-not-want-to-update-the-message –

回答

0

我會用這個Handler,並將它發佈3000毫秒延遲的消息。

下面是一個簡單Handler實現,你可以擴展/與int參數和obj成員過於定製:

private final Handler mHandler = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
     super.handleMessage(msg); 
     if (mProgreeDialoge.isShowing()) 
      mProgreeDialoge.dismiss(); 
    } 
}; 

然後顯示進度對話框後,只需發送一個消息處理程序與延遲3秒:

mProgreeDialoge.setMessage(PROGRESS_DIALOGUE_MSG01); 
mHandler.sendMessageDelayed(new Message(), 3000); 
+0

在使用處理程序的概念,它藉機現在對我來說,但與你的方式有點不同。請看看更新 – LetsamrIt

+0

@Amr,當然,如果你不想重複使用的處理程序,或檢查它的成員('arg1','arg2','obj'),這是簡單的不能延長它(儘管你需要創建一個'Runnable'來運行在另一個線程上。很高興你做到了! – rekaszeru