Помогите Диме помочь помогать помочь помогать

Женские куртки оптом

01.08.2016


Существуют два варианта использования, в которых применение AsyncTask может создать большие сложности, чем применение альтернативных решений:


Выполнение задачи без параметров (AsyncTask) - если AsyncTask не определяет никаких параметров, передача данных между U 1-потоком и фоновым потоком невозможна. Данные нельзя передать в фоновый поток, а из фонового потока нельзя сообщить о состоянии выполнения или вернуть результаты;


Реализация только метода doInBackground () - без обратных вызовов, которые обеспечивают обновление информации о ходе выполнения и/или возврат результатов, AsyncTask представляет собой просто фоновую задачу.


В обоих случаях вместо AsyncTask вполне можно использовать Thread или HandlerThread. Открываете магазин одежды? Стоит женские куртки оптом купить.


Рабочий поток, выполняющий фоновую задачу под управлением AsyncTask, не связан ни с объектом Looper, ни с очередью MessageQueue, поэтому передачу сообщений организовать невозможно. Теоретически можно связать Looper с рабочим потоком в методе doInBackground () или в выполняющейся задаче Runnable, но при этом рабочий поток будет заблокирован, пока не завершит свою работу объект Looper. В режиме последовательного выполнения заблокированы будут все прочие задачи AsyncTask, выполняющиеся в приложении.


Даже если объект Looper всего лишь подготовлен, но не инициализировал цикл обработки очереди сообщений, он не будет удалён из рабочего потока, и поток может быть использован для выполнения другой задачи. Но если следующая задача попытается подготовить другой! объект Looper в этом потоке, будет сгенерировано исключение RuntimeException.


Если в приложении требуется применение объекта Looper, следует воспользоваться классом HandlerThread вместо AsyncTask.