Как показать сообщение о загрузке или диалог до тех пор, пока не загрузится другое действие, потому что это занимает много времени

У меня активность занимает много времени, пока не загрузится, поэтому я хочу, когда я нажимаю начать эту активность, чтобы показать сообщение о загрузке, как (загрузка.....)

вот кнопка, которая начала эту деятельность

    start.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(test.this, MainActivity.class);
            startActivity(intent);

        }
    });

так что код, который я должен написать здесь, чтобы показать это загрузочное сообщение до загрузки MainActivity?

2 ответа

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

Действия займут много времени для запуска, когда вы делаете слишком много вызовов блочных методов или подобных вещей в MainThread. Попробуйте сделать это в фоновом потоке (вы можете использовать AsyncTask). Это приведет к немедленному запуску Activity. Пока ваш AsyncTask работает, вы можете показать немного ProgressDialog или лучше, показать где-нибудь в вашей Activity ProgressBar, который не блокирует пользователя от каких-либо действий.

Вы должны точно понимать, что такое Android и MainThreading. Есть также отличные учебники для диалогов. Вам также следует ознакомиться с Руководством по Android Design.

Если у вас есть действие A, которое при щелчке показывает действие B, загрузка которого занимает много времени, наиболее распространенный способ это:

  • в представлении макета операции B установите индикатор выполнения и сделайте его видимым в разделе Создать операцию B

  • все длительные операции помещаются либо в asyncTask, либо в какой-либо Сервис, который будет работать в фоновом режиме

  • когда длительная операция завершится - обновите индикатор выполнения, установив видимость View.GONE.

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

Другие вопросы по тегам