Найдено, что странный bahaviour ProgressDialog
.Диалог прогресса не отображается точно после show()?
Я показываю ProgressDialog
в onClickListener
списка, прежде чем начать новую тему и dismiss
его внутри этого потока, но после все работы выполняются:
GlobalProgressDialog.show(getActivity());
new Thread(new Runnable() {
@Override
public void run() {
//...all other logic
GlobalProgressDialog.dismiss();
}
}).start();
и что GlobalProgressDialog
я использую для упрощения вызовов:
public class GlobalProgressDialog{
private static ProgressDialog progressDialog;
public static void show(Activity activity){
progressDialog = new ProgressDialog(activity);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
public static void dismiss(){
if (progressDialog != null) {
progressDialog.dismiss();
}
}
}
Диалог появляется, но НЕ после show()
называемый! Я отлажена его и выяснили, что существуют 4 стандартные классы Android эксплуатируются:
- AdapterView.java
- AbsListView.java
- Handler.java
- Looper.java
И только после Looper
ProgressDialog
находится на свечах. Можно ли обмануть это или исправить? Или, может быть, есть какая-то моя ошибка в коде? Что бы это могло быть?
Задача Задача заключается в том, что задержка между щелчком пункта и show()
равна 1 сек. Таким образом, приложение замерзает в течение 1 секунды. И только тогда появляется диалог, и вся работа выполняется 1-2 секунды, иногда даже 0,5 секунды. В таких случаях не рекомендуется смотреть замороженное приложение и мигать в течение 0,5 секунд.
Заранее спасибо.
Простое решение - использовать 'AsyncTask' вместо' Thread' –
Я уже пробовал AsyncTask. Он работает одинаково. Между 'preExecute()' и щелчком по-прежнему есть промежуток времени – AnZyuZya