Я хочу использовать AsyncTask в своем приложении, но мне сложно найти фрагмент кода с простым объяснением того, как все работает. Я просто хочу что-то, чтобы помочь мне быстро вернуться к скорости, не пробираясь через документацию или много Q & Как снова.
Пример и объяснение приложения AsyncTask от Android
Ответ 1
 AsyncTask - это один из самых простых способов реализовать параллелизм в Android без необходимости работать с более сложными методами, такими как Threads. Хотя он предлагает базовый уровень параллелизма с потоком пользовательского интерфейса, его не следует использовать для более длительных операций (скажем, не более 2 секунд).
AsyncTask имеет четыре метода
-  onPreExecute()
-  doInBackground()
-  onProgressUpdate()
-  onPostExecute()
 где doInBackground() является наиболее важным, поскольку там, где выполняются фоновые вычисления.
Код:
Вот схема скелета с пояснениями:
public class AsyncTaskTestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  
        // This starts the AsyncTask
        // Doesn't need to be in onCreate()
        new MyTask().execute("my string parameter");
    }
    // Here is the AsyncTask class:
    //
    // AsyncTask<Params, Progress, Result>.
    //    Params – the type (Object/primitive) you pass to the AsyncTask from .execute() 
    //    Progress – the type that gets passed to onProgressUpdate()
    //    Result – the type returns from doInBackground()
    // Any of them can be String, Integer, Void, etc. 
    private class MyTask extends AsyncTask<String, Integer, String> {
        // Runs in UI before background thread is called
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Do something like display a progress bar
        }
        // This is run in a background thread
        @Override
        protected String doInBackground(String... params) {
            // get the string from params, which is an array
            String myString = params[0];
            // Do something that takes a long time, for example:
            for (int i = 0; i <= 100; i++) {
                // Do things
                // Call this to update your progress
                publishProgress(i);
            }
            return "this string is passed to onPostExecute";
        }
        // This is called from background thread but runs in UI
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            // Do things like update the progress bar
        }
        // This runs in UI when background thread finishes
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            // Do things like hide the progress bar or change a TextView
        }
    }
}
Схема потока:
Вот диаграмма, чтобы помочь объяснить, куда идут все параметры и типы:
Другие полезные ссылки:
- Какие аргументы передаются в AsyncTask <arg1, arg2, arg3>?
- Slidenerd Android AsyncTask Tutorial: Android Tutorial для начинающих
- Понимание AsyncTask - раз и навсегда
- Работа с AsyncTask и ориентация экрана
- Как передать несколько параметров в AsynkTask
- как передать два разных типа данных в AsyncTask, Android

