2011-08-09 37 views
1

我正在设计一个应用程序,通过点击一个按钮从sqlite数据库提取数据。我想在提取时间内显示一个等待消息或进度条,只要这个过程很长,比如说超过3秒。否则,它可以继续执行该程序。我该怎么做呢 。我试图显示使用下面的代码进度对话框,但它只是等待指定的睡眠时间和过程不显示任何.... PLSS帮助进度条只显示在长期操作

protected void GetOrders() 
{ 
    ProgressDialog dialog = null; 
    try 
    { 
     dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 
     //Accesses database 
     allOrders=ProductionOrdersBL.GetOrder(); 
     Thread.sleep(4000); 

    } 
    catch(Exception e){} 
    finally 
    { 
     dialog.dismiss(); 
    } 
} 

回答

0

我找到了解决办法...我execute方法的调用后有一些操作。因此,当doInBackground()方法在非UI线程中执行时,我的UI线程继续执行执行方法调用后的代码......解决方案是在执行方法调用之后的主UI线程中不执行任何任务:)

1

首先是用于显示进度条,你应该使用的AsyncTask() (this)。然后在其preExecute()方法说

try{ 
thread.sleep(3000); 
dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 

}catch(){ 
} 
在postExecute

则()使用

if(dialog.isShowing()){ 
dialog.dismiss 
} 
+0

谢谢ntc .... – Saiesh

+0

嘿,我仍然坚持.... AsyncTask中的doInBackground()方法返回到postExecute方法,甚至在它完全完成之前...我如何阻止它? – Saiesh

+0

这是不可能的..那永远不会发生。可能还有一些其他问题,从服务器获取数据时可能会出现异常。总是在doInBackground()完成后调用postExecute().. – ngesh