【发布时间】:2020-04-06 09:20:43
【问题描述】:
我正在尝试实现生命周期感知的长轮询(在活动/片段中)。轮询的范围将限于每隔固定时间间隔向服务器发送 API 请求的片段。但是,我无法实现它。
这就是我希望实现的样子
- 在客户端设置硬超时,而不考虑接收响应时产生的任何额外延迟。
- 等待上一个 API 调用的响应,然后再发送下一个请求。即,由于轮询间隔,轮询队列中的请求应等待响应,而不管其优先级如何
考虑:
HARD_TIMEOUT = 10 秒
Request 1: Started at: 0sec Response delay:1.2sec Duration left: 0.8sec
Request 2: Started at: 2sec Response delay:0.4sec Duration left: 1.6sec
Request 3: Started at: 4sec Response delay:2.5sec Duration left: 0sec
Request 4: Started at: 6.5sec Response delay:0.5sec Duration left: 1.0sec
Request 5: Started at: 8sec Response delay:0.8sec Duration left: 1.2sec
对于这个用例,我想使用轮询而不是套接字。任何想法/解决方案将不胜感激。谢谢。
【问题讨论】:
-
可以使用ticker,例如pl.kotl.in/mP5Rl4k0K
-
@IR42 代码使用 ObsoleteCoroutinesApi 进行注释,无法在生产中使用,重新设计可能会崩溃或使应用程序出现意外行为。
标签: android kotlin android-lifecycle polling long-polling