обновить прогрессбар в андроиде - PullRequest
0 голосов
/ 24 августа 2011

Я запускаю поток в своей деятельности и сразу же отображаю диалоговое окно прогресса. Метод в этой теме после завершения своей задачи вызывает другой поток, который вызывает метод m_progressDialog.dismiss();.

Это работает нормально, но я хочу реализоватьИндикатор выполнения теперь показывает, как этот индикатор заполняется в соответствии с завершением задачи в предыдущем потоке. Это занимает неопределенное количество времени для завершения его операций.

это может показаться неоднозначным, но я готов доработать его, если потребуется.

Небольшой фрагмент кода:

Метод в первом потоке заканчивается следующим образом

...
runOnUiThread(m_returnRes);
}

private Runnable m_returnRes = new Runnable() {

    public void run() {
        m_progressDialog.dismiss();

Также я пытался сделать это таким образом

m_progressDialog = new ProgressDialog(this);
        m_progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        m_progressDialog.setProgress(0);
        m_progressDialog.setMax(100);
        m_progressDialog.setMessage("Retrieving data..");
        m_progressDialog.show();

    Thread background = new Thread(new Runnable() {

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

            try {while(m_progressDialog.getProgress()<=100){
                Thread.sleep(500);}
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


        }
    });

    background.start();

но панель не заполняется и закрывается сразу после вызова метода .dismiss ()

1 Ответ

3 голосов
/ 24 августа 2011

Попробуйте использовать AsyncTask . Он обрабатывает threding для себя и имеет функцию publishprogress внутри onProgressUpdate для изменения содержимого просмотра, где вы можете обновить индикатор выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...