Тема
Нить - это параллельная единица исполнения. Он имеет свой собственный стек вызовов. Существует два способа реализации потоков в приложениях.
Один представляет собой новый класс, который расширяет поток и отменяет его run(). Другой предоставляет новый экземпляр Thread с Runnable object во время его создания. Нить может быть выполнена называя его "стартовый" метод. Вы можете установить "Приоритет" потока на вызывая его метод setPriority (int).
Нить может использоваться, если у вас нет влияния в части пользовательского интерфейса. Для Например, вы вызываете некоторый веб-сервис или загружаете некоторые данные, и после загрузки вы показываете его на экране. Тогда вам нужно используйте обработчик с потоком, и это сделает ваше приложение сложный для обработки всех ответов от Threads.
Обработчик позволяет отправлять и обрабатывать объекты Message и Runnable связанный с потоком MessageQueue. Каждый поток имеет каждое сообщение очередь. (Как и список дел), и поток будет принимать каждое сообщение и обрабатывайте его до тех пор, пока очередь сообщений не будет пустой. Итак, когда обработчик общается, он просто передает сообщение потоку вызывающего, и он будет подождите, чтобы обработать.
Если вы используете потоки Java, вам необходимо обработать следующие требования в вашем собственном коде:
Синхронизация с основным потоком, если вы отправляете результаты в пользовательский интерфейс По умолчанию для отмены потока нет нити по умолчанию объединение по умолчанию для обработки изменений конфигурации в Android
AsyncTask
AsyncTask позволяет правильно и легко использовать поток пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты на UI, без необходимости манипулировать потоками и/или обработчиками. асинхронная задача определяется вычислением, которое выполняется на фоновый поток и результат которого публикуется в потоке пользовательского интерфейса.
AsyncTask будет проходить следующие 4 этапа:
onPreExecute()
Вызывается в потоке пользовательского интерфейса перед выполнением задачи
doInbackground (Params..)
Вызывается в фоновом потоке сразу после onPreExecute() завершает выполнение.
onProgressUpdate (Прогресс..)
Вызывается в потоке пользовательского интерфейса после вызова publishProgress (Прогресс...).
onPostExecute (Результат)
Вызывается в потоке пользовательского интерфейса после завершения фонового расчета.
Почему вы должны использовать AsyncTask?
Прост в использовании для потока пользовательского интерфейса. (Итак, используйте его, когда поток вызывающего UI).
Не нужно манипулировать обработчиками.