Отображение progressdialog в Android, пока выполняется большой метод - PullRequest
0 голосов
/ 01 августа 2011

У меня есть длительный метод, который вызывается во время onCreate, этот метод заполняет текстовые представления, поэтому взаимодействует с пользовательским интерфейсом и обновляет, возможно, 70 меток (около 3-20 секунд в зависимости от устройства).

Я хочу отображать диалоги выполнения при выполнении этого метода.

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

Я надеялся найти событие, которое сработало после отображения активности, и нашел следующее, но оно по-прежнему оставляет экран черным до завершения метода.

@ Override public void onPostCreate (Bundle saveInstanceState)

Обычно я являюсь разработчиком WP7, и в .NET вы добавляете обработчик событий для onLoadComplete, который запускается после отображения пользовательского интерфейса, но до того, как пользователь сможет взаимодействовать с пользовательским интерфейсом, как мне это сделать в Android JAVA?

Спасибо

1 Ответ

0 голосов
/ 01 августа 2011

Поместите ProgressBar в представление.

Затем в методе onCreate () или onResume () сделайте следующее:

new Thread() {
    public void run() {
        yourLargeMethod();
    }
}.start();

Теперь вы можете сделать это внутри вашего метода для обновления progressBar

public void yourLargeMethod() {
// doSomething
...

runOnUiThread(new Runnable() {
        public void run() {
            // update the progress from the thread
            progressBar.setProgress(x); // x is your progress, 0 <= x <= progressBar.getMax()
        }
    });
}
...