Thread.sleep()是否不让其他线程运行?

时间:2019-02-22 23:19:09

标签: java android multithreading

我正在制作一个Android应用程序,并且我制作了一个类来分离和更轻松地管理与获取用户位置有关的代码。由于FusedLocationProviderClient需要一些时间来做出响应并执行onSuccess或onFailure侦听器中的代码,因此我制作了一种方法(waitForLocation()),该方法基本上等待直到其中一个侦听器被执行或超过了时间限制。 / p>

waitForLocation()方法是一种阻塞方法,它等待gotResponse变成true才能让其余线程继续运行(gotResponse也将变成true如果超过了时间限制。

问题在于,为了阻止代码在gotResponsetrue之前一直运行,我使用的是Thread.sleep()方法,但是所有的后台任务,例如{ {1}},并且侦听器似乎也与主线程一起冻结(CountDownTimer没有滴答声,并且侦听器从不执行)。

请帮助! 在此先感谢:D

这是我的课程:

CountDownTimer

1 个答案:

答案 0 :(得分:0)

  1. 这将使UI线程休眠。这是绝对不行的。我担心您对CountDownTimer和异步操作的使用非常错误。请查看更多示例。
  2. 您还忘记了在CountDownTimer onFinish上调用.start()永远不会发生。
  3. 将计时器分配给成员变量,然后它将一直存在,直到调用onFinish为止,然后您可以设置gotResponse。