Почему AsyncTask запускается в основном потоке приложения?

В моем приложении у меня есть класс для файлов UI, название которого – «SettingActivity».

Затем для выполнения некоторых заданий в фоновом режиме я привязываю этот класс пользовательского интерфейса (SettingActivity) к службе. В этой службе есть два предопределенных метода (определенные в файле .aidl), один – startTask (), другой – stopTask ().

В startTask () я сделал вызов AsyncTask. Но когда я проверил имя Looper этой AsyncTask. Это «главное». На мой взгляд, AsyncTask должен запустить другой Thread, отличный от основного Thread .

Так кто-нибудь знает, почему это происходит?

Коды заключаются в следующем:

  @Override
     Protected void onPreExecute () {
         super.onPreExecute ();
         Log.d (TAG, «onPreExecute» + Looper.myLooper (). GetThread (). GetName ());
     }

Тогда я получу основной результат.

AsyncTask имеет несколько частей: метод doInBackground , который фактически работает в отдельном потоке и метод onPostExecute который работает в потоке пользовательского интерфейса. Цель onPostExecute заключается в публикации результатов (таких как обновление иерархии представлений или установка текста в текстовом представлении), которые должны выполняться в потоке пользовательского интерфейса. Он также может публиковать обновления. Чтобы все это работало правильно, необходимо создать AsyncTask и вызвать метод execute в потоке пользовательского интерфейса.

Вы не должны вызывать действия пользовательского интерфейса из doInBackground – это приведет к сбою вашего приложения.

На самом деле, я проверил документ android, onPreExecute (), onProgressUpdate (Прогресс …) и onPostExecute (Результат) , все «вызывается в потоке пользовательского интерфейса».

Только метод doInBackground (Params …) «вызывается в фоновом потоке».

Intereting Posts
Кросс-платформенное приложение: Android + Custom REST Backend (Yii2) + сторонний поставщик единого входа для входа в систему (Google+) Дождитесь выполнения AsyncTask с помощью ProgressDialog Лучшие практики для соглашений об именах ID в Android? Android определить, находится ли устройство в праве на левый язык / макет Эффективность glDrawElements vs glDrawArray Создание пользовательского приложения для обработки вызовов Как записывать видео с экрана Android программно в KitKat 4.4 Подключение приложений для Android и ПК OnCreate, onCreateOptionsMenu, onResume, каков порядок исполнения? Как заставить ScrollView с RelativeLayout с несколькими дочерними макетами заполнить экран? Android: если маркеры перекрываются друг с другом на карте, то событие click запускается для последнего скрытого Закрытие Facebook после закрытия приложения Вращение экрана в реальном времени Разработка клиента обмена сообщениями Instance Messaging + Server для Android Пользовательская панель прогресса для Android