进度条仅在长时间操作期间显示

时间:2011-08-09 10:07:57

标签: android multithreading dialog thread-safety waithandle

我正在设计一个应用程序,只需单击按钮即可从sqlite数据库中获取数据。我想在获取期间显示等待消息或进度条,只有当进程长时间超过3秒时才会显示。否则它可以继续该程序。我该怎么做呢 。我尝试使用以下代码显示进度对话框,但它只等待指定的睡眠时间并继续而不显示任何内容.... plss help

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(); 
    }
}

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

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