我在用
AsyncTask.execute(() -> {...}
在我的应用程序中并注意到此方法阻塞了 ui 线程。我在执行主体中有一些代码执行一些计算,需要 5 到 8 秒,然后通过runOnUiThread
. 但是看起来一旦我调用了其中包含 Async.execute(..) 的方法。UI 被阻止添加其他元素,直到该元素完成其计算并将结果返回给 UI。
Android 文档还指出:
必须从应用程序的主线程调用此方法。
(链接到文档)
所以我的问题是,异步执行会阻塞 ui 线程吗?我的观察是否属实。
谢谢
编辑
我正在使用这个库来抓取 TMDB 数据
AsyncTask.execute(() -> {
TmdbTvSeasons tmdbTvSeasons = new TmdbApi(apiKey).getTvSeasons();
TvSeason season = tmdbTvSeasons.getSeason(
tmdbShowId,
seasonNumber,
"en",
TmdbTvSeasons.SeasonMethod.videos);
listener.tvSeasonReceived(season);
});
然后,我的侦听器将结果传递给 ui 以更新回收器视图:
tListener = t -> {
tArray.add(t)
jobHandler = new Handler(Looper.getMainLooper());
jobHandler.post(() ->
adapter.notifyItemInserted(tArray.size() - 1));
};