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

Стеклянные межкомнатные двери

27.07.2016


Реализации AsyncTask создаются с помощью конструктора по умолчанию, который должен вызываться из Ш-потока. Если другой поток создаёт объект AsyncTask (например, на версиях платформы, предшествующих Jelly Bean), обратные вызовы могут выполняться не в тех потоках, где предполагалось. Поток, создающий объект AsyncTask, решает, в каком потоке будут выполняться обратные вызовы onProgressUpdateO, onPostExecuteO и onCancelled().


В действительности самый первый созданный в процессе приложения объект AsyncTask определяет потоки для выполнения обратных вызовов всеми последующими реализациями AsyncTask в данном приложении. Поток для выполнения обратных вызовов устанавливается только один раз на весь период работы приложения. Начиная с версии Jelly Bean, AsyncTask стал классом, загружаемым при запуске приложения в U 1-потоке, и это даёт полную уверенность, что вышеперечисленные обратные стеклянные межкомнатные двери всегда будут выполняться только в U 1-потоке.


Для конструктора не требуются какие-либо конфигурационные параметры, вместо них передаются аргументы, необходимые для начала работы задачи: execute! Object... objects ); Входные данные состоят из списка объектов, причём размер списка не фиксирован, то есть список может принять любое количество объектов произвольного типа. Передаваемые аргументы извлекаются в обратном вызове doInBackground (). При таком подходе данные используются совместно Ш-иотоком и фоновым потоком и всегда доступны им обоим.


Метод executed должен вызываться из UI-потока, в противном случае обратный вызов onPreExecute () невозможно будет выполнить в UI-нотоке. Инициализация выполнения является одноразовой операцией, и попытка обратиться к ней более одного раза приведёт к ошибке и исключению IllegalStateException.