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

Фотограф на свадьбу Москва

27.07.2016


В дополнение к фоновому режиму выполнения AsyncTask предлагает механизм передачи данных из executed в doInBackground(). Из вызывающего потока в фоновый поток можно передать объекты любого типа. Это похоже на HandlerThread (см. главу 8), но при использовании AsyncTask с разработчика снимается ответственность за передачу и обработку экземпляров Message с помощью обработчика Handler.


Данные, передаваемые через executed в doInBackground(), используются : обоими потоками, поэтому доступ к ним должен быть организован взаимо исключающим образом. Другими словами, требуется синхронизация, чтобы защитить данные от повреждений. В самом общем случае, показанном в начале главы, когда необходимо выполнить задачу в фоновом режиме и вернуть результат в UI- поток, AsyncTask подходит как нельзя лучше. А что касается обработки потока управления при подготовке пользовательского интерфейса перед выполнением длительной задачи, выполнения самой задачи, индикации хода выполнения и возврата результата, всё это доступно в форме дополнительных обратных вызовов, в классах, производных от AsyncTask. Эта реализация расширяет AsyncTask (представляет собой класс, производный от AsyncTask) и определяет аргументы в виде объектов, передаваемых между потоками:


Ра rams - входные данные для задачи, выполняемой в фоновом режиме;


Progress - данные о ходе выполнения, передаваемые из фонового потока, то есть из doInBackground () в Ш-поток через обратный вызов onProgressUpdate ();


Result - результат, полученный при выполнении фонового потока и отправляемый в Ш-поток. Узнайте фотограф на свадьбу москва цена за час.


Все методы обратных вызовов выполняются последовательно, за исключением onProgressUpdate(), который инициализируется методом doInBackground () и выполняется параллельно с ним. На рис. 10.1 показаны жизненный цикл объекта AsyncTask и последовательность его обратных вызовов.