gpt4 book ai didi

android - Async 是否执行 block ui 线程?

转载 作者:行者123 更新时间:2023-11-30 05:11:17 24 4
gpt4 key购买 nike

我正在使用

AsyncTask.execute(() -> {...} 

在我的应用程序中,注意到此方法会阻塞 ui 线程。我在执行主体中有一些代码执行一些需要 5 到 8 秒的计算,然后通过 runOnUiThread 将结果返回到 ui。但是看起来一旦我调用了其中包含 Async.execute(..) 的方法。在该元素完成计算并将结果返回给 UI 之前,UI 无法添加其他元素。

还有 Android 文档状态:

This method must be called from the main thread of your app.

( Link to docs )

所以我的问题是,async execute 会阻塞 ui 线程吗?我的观察是否属实。

谢谢

编辑

我正在使用 this library抓取 TMDB 数据

 AsyncTask.execute(() -> {

TmdbTvSeasons tmdbTvSeasons = new TmdbApi(apiKey).getTvSeasons();
TvSeason season = tmdbTvSeasons.getSeason(
tmdbShowId,
seasonNumber,
"en",
TmdbTvSeasons.SeasonMethod.videos);

listener.tvSeasonReceived(season);

});

然后我的监听器将结果传递给 ui 以更新回收器 View :

 tListener = t -> {
tArray.add(t)
jobHandler = new Handler(Looper.getMainLooper());
jobHandler.post(() ->
adapter.notifyItemInserted(tArray.size() - 1));
};

最佳答案

AsyncTask.execute 在 AsyncTask 线程上运行。只要你不调用 .get() (你永远不应该这样做)它是异步的。但是,您不需要使用 runOnUiThread 或使用它发送到 Handler - AsyncTask 的全部要点在于 onPostExecute 在 UI 线程上运行 - 否则您只需使用线程。

关于android - Async 是否执行 block ui 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com