В процессе создания Activity мы создаем экземпляр Handler с нашей реализацией handleMessage(). В принципе, при получении любого сообщения мы обновляем ProgressBar на 5 пунктов, а затем выходим из обработчика сообщений.
В функции onStart() мы устанавливаем фоновый поток. В реальной системе этот поток будет делать что-то значимое. Здесь же мы просто спим одну секунду, посылаем сообщение в обработчик и повторяем в общей сложности 20 проходов. Это, в сочетании с увеличением положения ProgressBar на 5 пунктов, приведет к тому, что полоса займет весь экран, поскольку максимальное значение ProgressBar по умолчанию равно 100. Вы можете настроить этот максимум с помощью функции setMax(), например, установить максимальное значение равным количеству обрабатываемых строк базы данных и обновлять один раз для каждой строки.
Обратите внимание, что мы оставляем onStart(). Это очень важно. Метод onStart() вызывается в потоке пользовательского интерфейса активности, поэтому он может обновлять виджеты