Преимущества и недостатки Asynctask?
AsyncTask, Asynchronous Android обеспечивает легкий вес, может быть непосредственно унаследован AsyncTask, реализовать асинхронную операцию в классе и обеспечивает текущую степень асинхронного выполнения интерфейса обратной связи (пользовательский интерфейс может достигать обновлений прогресса через интерфейс), наконец, результаты в основном потоке пользовательского интерфейса
Преимущество:
1 простой, быстрый
2 управления процессом
3 DISA dvantages использования:
Недостатки: при использовании нескольких асинхронных операций и, а также необходимость изменения Ui, станут более сложными
Android AsyncTask Handler более легкий, подходит для асинхронной обработки просто. Первым явным Android является Handler и AsyncTask, не блокировать основной поток (поток пользовательского интерфейса), а обновления пользовательского интерфейса завершены только в основном потоке, поэтому асинхронная обработка неизбежна
Android, чтобы уменьшить сложность разработки, предоставляет AsyncTask. Класс фоновой задачи AsyncTask представляет собой пакет, так как это название предполагает асинхронную задачу.
AsyncTask наследует от класса Object позицию android.os.AsyncTask.Чтобы использовать AsyncTask, мы должны предоставить три общих параметра, несколько перегрузок методов и (по крайней мере, перегрузку)
AsyncTask определяет три типа общих типов Params, Progress и Result.
Параметры позволяют выполнять выполнение параметров входных параметров, таких как URL-адрес HTTP-запроса. Процент фоновых задач Прогресс. Результат фоновой миссии в конечном итоге возвращает результаты, такие как String. Использование одноклассников AsyncTask знает, по крайней мере, для того, чтобы переписать следующие два метода асинхронными данными загрузки:
doInBackground (Params ...) Здесь можно выполнить фоновое выполнение, отнимать много времени. Обратите внимание, что нет прямого доступа к пользовательскому интерфейсу. Этот метод выполняет фоновый поток, основная работа для выполнения задачи, часто занимает много времени. В процессе реализации можно вызвать publicProgress (Прогресс ...), чтобы обновить ход выполнения задачи. onPostExecute (Результат) Эквивалент пользовательского интерфейса обработчика, в котором doInBackground может использоваться в результатах, полученных из пользовательского интерфейса обработки. Этот метод выполняется в основном потоке, результаты выполнения задачи при возврате параметров к этому методу При необходимости вы должны переписать следующие три метода, но не обязательно:
onProgressUpdate (Progress ...) Вы можете использовать индикатор выполнения увеличивает пользовательский интерфейс. Этот метод выполняется в основном потоке, который используется для отображения расписания выполнения задачи. onPreExecute() Здесь конечный пользователь, вызывающий интерфейс Excute, при вызове этого метода запускает задачу перед выполнением, может отображать диалоговое окно выполнения здесь. onCancelled() Пользователь требует, чтобы отменить, нужно сделать использовать класс AsyncTask, следующие несколько должны соблюдать правила:
экземпляры задачи должны быть созданы в потоке пользовательского интерфейса, Выполнить метод должен быть вызываемый в потоке пользовательского интерфейса, Не вызывайте руководство onPreExecute (onPostExecute), (Результат), doInBackground (Params ...), onProgressUpdate (Прогресс ...) этот метод, Задача может выполняться только один раз, иначе называемый многими время будет ненормальным,
Принцип асинхронной реализации двух обработчиков и применение преимуществ и недостатков
В асинхронной реализации Handler, связанной с обработчиком, Looper, Message, Thread four object, Реализация асинхронных процессов - это основной поток для запуска Thread (Zi Xiancheng) à thread (Zi Xiancheng), запускающий и генерирующий Message-Mail Looper получает сообщение и передается обработчику-обработчику Looper для получения сообщения и изменения пользовательского интерфейса.
Использование преимуществ:
1 четкой структуры, функции определения
2 для нескольких фоновых задач, простые, четкие
Использование недостатков: 1 в одиночной фоне асинхронной обработки код, слишком много, слишком сложная структура (относительная)
Преимущества и недостатки AsyncTask и потока выполняют асинхронную задачу, где ссылочный пример суммируется ниже?
public class TestActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
(newLoadAsyncTask()).execute(1000);
}
/**
private class LoadAsyncTask extends AsyncTask<Integer,Integer,String>{
@Override
protected void onPreExecute(){
Log.v("TestActivity","Began to implement the asynchronous thread");
}
/**
* The first parameter to the Integer parameters of the corresponding AsyncTask here in
* The third parameter here the return value of the String corresponding to AsyncTask
* The method is not running on the UI thread, mainly used for asynchronous operation, all not in the method of UI space setting and modification
*/
@Override
protected String doInBackground(Integer...params){
// To load the network data
}
@Override
protected void onPostExecute(Stringresult){
Log.v("TestActivity","The end of execution of the asynchronous thread");
// Update UI
}
}
}
Through the thread+Runnable+handler
public class TestActivityextends Activity{
private threadHandler handler;
@Override
public voidonCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// The initialization handler
handler=new threadHandler(this);
// Open a new thread
newThread(newRunnable(){
@Override
public void run(){
// To load the network data
updateUI();
}
}).start();
}
static class threadHandler extends Handler{
private WeakReference<TestActivity>testReference;
public threadHandler(TestActivity activity){
testReference=new WeakReference<TestActivity>(activity);
}
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
TestActivity test= testReference.get();
// Update UI
}
}
public voidupdateUI(){
// Other treatment
handler.sendEmptyMessage(0);
}
}
Эти 2 режима могут быть реализованы, но где разница между ними? Какие преимущества и недостатки?
(1), AsyncTask - это пакетный пул потоков. По сравнению с методом Thread + Handler поток пользовательского интерфейса AsyncTask более удобен в работе, потому что onPreExecute(), onPostExecute (onProgressUpdate) и обновляет UI-метод() запускаются в основном потоке, поэтому вам не нужно обрабатывать сообщения обработчика, (2), я не совсем согласен с хорошим пакетом, что повлияет на производительность аргументации. При использовании моей практики глобальная нить пустая реальная слабость возникает только из 5 рабочих потоков AsyncTask, то есть APP, если использование технологии AsyncTask для потока выполнения, тогда в то же время может быть до 5 потоков, выполняемых одновременно, другой поток будет заблокирован (обратите внимание: не используйте поток выполнения AsyncTask, New из его потока не зависит от этого ограничения), поэтому AsyncTask не используется для многопоточных и сетевые данные, потому что вполне вероятно, что он будет генерировать блокировку, тем самым снижая эффективность.
Три. Является ли одновременная 100 + асинтеза? AsyncTask использует механизм пула потоков, емкость 128, одновременно работает 5 основных потоков, остальная часть очереди.
Ничего себе, вы просто скопировали его из [здесь] (http://www.programering.com/a/MTO1kjNwATA.html). Пожалуйста, объясните это своими словами. – Enzokie