Я не верю, что this answer на самом деле правильный.
Это не имело бы смысл для документации отдельно список экземпляра и загрузки, если эти вещи были на самом деле то же самое. Я считаю, что это заявление
Класс AsyncTask должен быть загружен в поток пользовательского интерфейса.
имеет отношение к Java Class Loading. Другими словами, сам AsyncTask
класс должен быть загружен в основной поток. В Jelly Bean (или позже) это автоматически. Но в старых версиях Android существует вероятность того, что этот класс будет загружен в другой поток, что может вызвать проблемы.
See this Google discussion для получения дополнительной информации. В принципе, существуют условия (например, код с использованием IntentService
), который может привести к тому, что AsyncTask
будет первым загружен по неправильной (не основной) теме.
Самым простым способом исправить это, до Jelly Bean, кажется, использовать что-то вроде:
Class.forName("android.os.AsyncTask");
в onCreate() method приложения, чтобы заставить загрузку классов произойдет, когда вы хотите.
Создание экземпляра AsyncTask
, вероятно, что вы думаете, что это ... инстанцировании его:
MyAsyncTask task = new MyAsyncTask();
и которые также должны выполняться в основном потоке.