2012-05-26 2 views
0

Не удалось открыть диалог выполнения, удалив блокирующий вызов.Продвинутый диалог блокировки

Моя цель - загрузить большой объем данных из Интернета и информировать конечного пользователя о статусе загрузки, однако мне нужно подождать, пока данные будут полностью загружены для перехода к следующему шагу, и из-за этого я должен блокировать выполнение кода.

Блокировка приводит к тому, что диалог прогресса не отображается или не замерзает. Мне нужен совет для реализации этих задач наилучшим образом. Поскольку мои задачи просты, мне кажется, что я слишком многолюбив, чтобы реализовать задачу полного слушателя, и мне было интересно, есть ли другой способ решить мою проблему?

ответ

0

Попробуйте :::

@Override 
    protected void onPreExecute() { 
     dialog = new ProgressDialog(YourActivity.this); 
     dialog.setMessage("Progress start"); 
     dialog.show(); 
     Log.d(TAG, "Showing dialog"); 
    } 

    @Override 
    protected void onPostExecute(T result) { 
     dialog.dismiss(); 
     Log.d(TAG, "Dismissing dialog"); 
    } 
+0

Не помогло :(Обновление первого сообщения всей задачей – Ruuhkis

+0

удалите super.onPreExecute(); & super.onPostExecute (result), затем попробуйте –

+0

Я понял проблему .. с вызовом результата .get() я заблокировал основной поток от продолжения. Должен ли я реализовать полный прослушиватель или есть ли более простой способ сделать это, чтобы блокировать код от выполнения? – Ruuhkis

1

Вы можете использовать это:

@Override 
protected void onPreExecute() { 

dialog= ProgressDialog.show(YourActivity.this, "", "MessageYouWantToDisplay"); 

}  


@Override 
protected void onPostExecute(T result) { 

dialog.dismiss(); 

} 

Вы называете класс, который расширяет AsycTask, набрав:

new NameOFClass().execute(); 

Попробуйте сначала в качестве и поставьте Thread.sleep() в методе doInBackground, чтобы понять, как он работает. И после этого используйте его в своем проекте с помощью ваших истинных методов, данных и т. Д.

Смежные вопросы