有没有办法在一定的超时时间后退出('continue;')循环迭代?
我有一个循环,该循环将从网络收集数据,然后使用这些数据进行计算。
数据在大约 1 到 2 秒后变得过时,因此如果循环迭代花费的时间超过 1 秒,那么我希望它“继续”到下一次迭代。
有时收集数据可能需要时间,但有时计算时间可能超过 1 秒,因此 HTTP 超时无法满足我的需要。 此外,在进行计算时,我正在使用的线程被阻塞,因此我无法检查 System.currentTimeMillis();
有没有办法使用另一个线程来检查时间并强制继续原来的for循环。
最佳答案
使用 AsyncTask
进行阻塞计算,并有一个属于主线程的 Handler
。
在您的 onPreExecute()
中,您可以 Handler.postDelayed()
调用 AsyncTask.cancel(true)< 的
。在您的 Runnable
/onPostExecute()
中,您可以取消上述 Runnable
,因为如果计算及时完成,则不需要它。工作完成。
关于Java - 'continue' 特定超时时间后循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526320/