2014-05-19 23 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