Как показать сообщение о загрузке или диалог до тех пор, пока не загрузится другое действие, потому что это занимает много времени
У меня активность занимает много времени, пока не загрузится, поэтому я хочу, когда я нажимаю начать эту активность, чтобы показать сообщение о загрузке, как (загрузка.....)
вот кнопка, которая начала эту деятельность
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.
Я бы написал вам код, но так как у меня нет вашего кода, я думаю, что лучший способ, которым я мог бы помочь, - разбить вашу проблему на этапы.