Индикатор выполнения показывать только при длительных операциях - PullRequest
1 голос
/ 09 августа 2011

Я разрабатываю приложение, которое выбирает данные из базы данных 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 ]

1 голос
/ 09 августа 2011

Прежде всего для отображения индикатора выполнения вы должны использовать 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 голосов
/ 18 сентября 2011

Я нашел решение ... У меня были некоторые операции после вызова метода execute.Таким образом, в то время как метод doInBackground () выполнялся в потоке, не являющемся пользовательским интерфейсом, мой поток пользовательского интерфейса просто продолжал выполнять код, следующий за вызовом метода execute ... Решение состоит в том, чтобы не выполнять никаких задач в основном потоке пользовательского интерфейса после вызова метода execute:)

...