Диалогът за напредъка не се показва

Искам да сложа ProgressDialog в моята програма, докато изчислявам нещо. Опитах много неща, но всяко от тях ми помага. Ето моя код;

                dialog=ProgressDialog.show(this, "calculating", "Please wait while the calculation is getting done.",true);

                this.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub

                changeHelp = 0;

                if(screenNumber == 1){
                    compareImages(3.3, 0.12);
                }

                else if(screenNumber==2 || screenNumber == 4){
                    compareImages(1.4, 0.1);
                }
                else if ( screenNumber == 3)
                    compareImages(0.41, 0.1);
                else
                    compareImages(3.3, 0.0676);

                dialog.dismiss();

                screenNumber++; }
        });

Има много въпроси относно този проблем. Въпреки че опитах много от тях, не можах да се справя с проблема. Не искам да използвам asynctask. Моля, помогнете ми.

----EDİT----

Добавих thread.sleep(2000) в try, но все още не работи. Мисля, че правя нещо нередно, докато поставям dialog.dismiss, но не можах да намеря къде е проблемът?


person begin_EN    schedule 15.09.2013    source източник


Отговори (1)


Мисля, че вашият ProgressDialog беше показан, но за много малко време, защото не изпълнявате задача, която продължава поне секунда, а много по-кратко.

Ако искате да постигнете целта си, по-добрият подход е да използвате AsyncTask, да, не искате да го използвате, но за вашата цел AsyncTask е според мен най-добрият подход, който можете да използвате.

Но като заобиколно решение има метод Thread.sleep() за симулиране на някаква задача, която "ще продължи" по-дълго. Но трябва да се обадите от Backround Thread (за да избегнете замразяване на потребителския интерфейс). Предварителните диалогови прозорци могат да бъдат отхвърлени от всякакъв вид тема.

person Simon Dorociak    schedule 15.09.2013
comment
Имам add thread.sleep(2000), но все още не работи. Предполагам, че правя нещо нередно. - person begin_EN; 15.09.2013