Почему 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
Как пропускать значения по конкретным индексам в линейной диаграмме с помощью библиотеки диаграмм MPAndroid? ClassCastException: AbsListView $ LayoutParams нельзя отнести к галерее $ LayoutParams Библиотека поддержки проектирования – какая версия для использования с SDK v21 Является ли R.layout.listview таким же, как R.id.listview Как определить startMode в AndroidManifest.xml – Использование PhoneGap & JQM Как изменить макет (без кодирования) в Android Studio Android: что делать, если производительности ListView все еще недостаточно? Новый API видения – Размер изображения Запустите фрагмент диалога при нажатии кнопки с пользовательского базового адаптера> getView Как сделать TextView похожим на EditText? Интерфейс JavaScript WebView работает только через Instant-Run от Android Studio, но не при компиляции с помощью регулярной градации Отмена подписки на LocationListener из LocationManager Android Share – Facebook SDK – ShareActionProvider Объявление enum в java Android UINavigationController-подобная функция