2013-10-03 6 views
1

Я искал в Интернете, но я нахожу только случаи, когда пользователи хотят показать диалог в asynctask, как этот пример: protected void onPreExecute().Android: Asynctask без отображения диалогового окна

{ 
          super.onPreExecute(); 
          pDialog = new ProgressDialog(NumericoComercial.this); 
          pDialog.setMessage("Actualizando ..."); 
          pDialog.setIndeterminate(false); 
          pDialog.setCancelable(true); 
          pDialog.show(); 
         } 

То, что я хотел бы знать, если это может быть сделано в AsyncTask без предъявления каких-либо диалога в onPreExecute() и onPostExecute(), как обычно делается.

У меня возникли проблемы с использованием asynctask с диалогами, касающимися ошибки утечки окна. То, что я пробовал, не добавляет никакого диалога к Pre и Post Actions, как в следующем примере.

class UpdateCandidatos extends AsyncTask<String, String, String> { 


        @Override 
        protected void onPreExecute() { 

        } 


protected void onPostExecute(String file_url) { 

        } 
       } 

Возможны ли ошибки с использованием этого метода, например, когда действие завершено?

Спасибо

+0

Не могли бы вы объяснить это более подробно? –

+0

Я редактировал его, но я имею в виду, что если рекомендуется использовать диалоги в Asynctask для уменьшения ошибок или если я не могу включить их без каких-либо проблем. – Katherine99

ответ

1

onPreExecute() и onPostExecute() не требуется методы расширения Aynctask то все вещи, которые вы пишете в этих методах (Dialog, ProgressDialog и т. д.), не нужны для правильной работы вашего класса.

class UpdateCandidatos extends AsyncTask<String, String, String> { 

    protected Long doInBackground(String... urls) { 
     //add here your background work 
    } 

} 

это очень упрощенный и полностью разветвление AsyncTask, что делать «что-то» в фоновом режиме, не оказывающем диалога.

Примечание: вам придется выполнять задачу в соответствии с жизненным циклом вашего приложения.

+0

привет Роберто спасибо за объяснение, я удалил эти 2 метода. – Katherine99

+0

добро пожаловать ^^ –

1

Я рекомендовал бы вам отменить задание асинхронной в вас OnPause() метод. Таким образом, если ваша активность закрывается, задача async не будет пытаться публиковать какие-либо данные, а onPostExecute не будет вызвана.

Хм, у вас не должно быть ошибок с onPostExecute(), вы можете использовать async-задачу, не показывая никаких данных, это не обязательно. Вы не должны даже @Override этой функции, просто положить Пустоту я заявление (... расширяющий AsyncTask < ..., ..., Пустота>)

+0

Тогда, не отображая никакого диалога, вы не спровоцируете приложение для сбоя, верно? – Katherine99

+1

Правильно. Но все же я не забываю отменить свою AsyncTask при закрытии вашей активности, так как onPostExecute выполняется в потоке пользовательского интерфейса, и даже если вы не будете модифицировать пользовательский интерфейс, это может привести к неправильному использованию приложения, поскольку вы не можете точно знать, что будет дальше на заднем фоне. – JanBo

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