2012-05-09 2 views
1

Я получаю пропущенную ошибку окна, когда пытаюсь закончить свою деятельность.Dismiss ProgressDialog, но все еще утиль

Я рассмотрел много подобных вопросов об этом, и ответ должен был использовать dismiss() вместо hide() или отменить диалог перед вызовом finish().

Я звоню dismiss(), затем позвоните finish(), почему я получаю утечку?

Вот мой ProgressDialog код, который находится в классе, простирающейся AsyncTask

public Background(Context c){ 
     context = c; //the activity's context 
     dialog = new ProgressDialog(c); 
    } 
    protected void onPreExecute(){ 
     dialog.show(); 
    } 
    protected String doInBackground(String... urls) { 
     //do http request 
     return ""; 
    } 
    protected void onPostExecute(String result) { 

     dialog.dismiss(); 
     if(request == LOGOUT_REQUEST) 
      finish(); 
     else{ 
      getResults(document); 
     } 
    } 

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

ответ

1

Вы отклоняете диалоговое окно в методе onPostExecute. Этот метод не будет работать, пока не завершится AsyncTask. Вы только получаете сообщение об ошибке при выходе из приложения с помощью кнопки «Назад»? Если это так, вы также должны убедиться, что диалог отклонен в onDestroy вашей деятельности.

+0

Нет, задача завершена, я не отступаю. Я положил его в onDestroy на всякий случай, и это не помогло. – Ryan

+0

Я заработал. Что-то странное происходило в 'onPostExecute'. Я ничего не менял, кроме своей работы. Думаю, я вернусь к нему, если он вернется. Ваш ответ уместен. Спасибо, что пытались помочь. – Ryan

+0

Нашел его, имел метод в моем 'onDestroy', которого не должно было быть. Он пытался создать новый фоновый поток, который включал диалог прогресса. – Ryan

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