gpt4 book ai didi

android - 从 UI 线程暂停 AsyncTask 的正确方法是什么

转载 作者:行者123 更新时间:2023-11-29 15:59:25 26 4
gpt4 key购买 nike

我的 AsyncTask 应该等到 UI 线程中的事件发生。

所以,我开始使用简单的 while 循环。但是,在某些导致 UI 线程卡住的设备中。所以在阅读以下答案后: Fatal Spin-On-Suspend/Stuck on ThreadID[但是,它并不完全相同 - 我将 while 放在异步任务中而不是主 Activity 中]

我添加了 Thread.sleep - 它似乎确实解决了问题。

但是,我觉得我在这里做错了什么......我想知道什么是正确的方法。

最佳答案

永远不要休眠或阻塞 UI 线程。在 AsyncTask 的后台线程中等待。

一种方法是suitianshi用wait()/notifyAll()指出的。另一种是使用 CountDownLatch:

  1. 在 UI 线程中创建一个锁存器:CountDownLatch latch = new CountDownLatch(1);
  2. 子类 AsyncTask 以便它在构造函数中获取闩锁并将其保存到引用 mLatch
  3. doInBackground()中,需要等待时调用mLatch.await()。这将阻止 AsyncTask
  4. 在 UI 中,当您等待的事件发生时,调用 latch.countDown()

你应该可以从这里开始了。

关于android - 从 UI 线程暂停 AsyncTask 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565045/

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