gpt4 book ai didi

java - 如何让UI在长时间运行时不被阻塞?

转载 作者:行者123 更新时间:2023-11-29 21:58:07 24 4
gpt4 key购买 nike

我有一个按钮,当用户点击它时,它会更新整个 UI( TextView 、图形)。 UI 的内容来自 SQLite 数据库,我将更新函数命名为 loading()。你可以想象,在 loading() 内部,有很多数据库操作和 UI 更新。当数据量变大时,这个loading()的时间会变长,所以按钮会在按下状态的时间变长。

我尝试使用 asynctask 来处理这种情况,以便出现进度对话框而不是卡住按钮,但我无法将 loading() 方法放在 的 doinbackground() 上asynctask 因为 doinbackground() 无法触及从其 Activity 的 onCreate() 方法声明的 UI 组件。

我不想重写 loading() 函数。

还有其他方法吗?请帮忙,如果可以的话,请提供一些例子,我很感激。

最佳答案

如果您在主应用程序线程(也称为 UI 线程)上运行耗时的任务,您的 UI 将无响应并最终看到著名的 Application Not Responding (ANR) dialog。 .

推荐的方法是在 AsyncTask 中执行这些操作并在 doInBackground() 中调用 publishProgress()。将您的 UI 更新逻辑放在 AsyncTaskonProgressUpdate() 中。 onProgressUpdate() 将在您调用 publishProgress() 后在主应用程序线程上自动调用。

关于java - 如何让UI在长时间运行时不被阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693419/

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