Я использую
AsyncTask.execute(() -> {...}
в своем приложении и заметил, что этот метод блокирует поток пользовательского интерфейса.У меня есть некоторый код в теле execute, который выполняет некоторые вычисления, которые занимают от 5 до 8 секунд, а затем возвращает результат в пользовательский интерфейс через runOnUiThread
.Но похоже, что когда я вызываю метод, в котором есть Async.execute (..).Пользовательский интерфейс заблокирован от добавления других элементов до тех пор, пока этот элемент не завершит свои вычисления и не вернет результат в пользовательский интерфейс.
Также в состоянии документации для Android:
Этот метод должен вызываться изосновной поток вашего приложения.
( Ссылка на документы )
, поэтому мой вопрос: асинхронное выполнение блокирует поток пользовательского интерфейса?мои наблюдения верны.
спасибо
РЕДАКТИРОВАТЬ
Я использую эту библиотеку для очистки данных TMDB
AsyncTask.execute(() -> {
TmdbTvSeasons tmdbTvSeasons = new TmdbApi(apiKey).getTvSeasons();
TvSeason season = tmdbTvSeasons.getSeason(
tmdbShowId,
seasonNumber,
"en",
TmdbTvSeasons.SeasonMethod.videos);
listener.tvSeasonReceived(season);
});
Мой слушатель затем передает результат в пользовательский интерфейс для обновления представления переработчика:
tListener = t -> {
tArray.add(t)
jobHandler = new Handler(Looper.getMainLooper());
jobHandler.post(() ->
adapter.notifyItemInserted(tArray.size() - 1));
};