背景:
最近我不得不将一个服务迁移到 JobIntentService (JIS) 以支持 Android 8.0 后台服务限制。此服务在 FirebaseInstanceIDService 调用它后将令牌注册到我的服务器。
问题:
我有一个必须从 JobIntentService (JIS) 进行的网络调用。所有的网络调用操作都是通过 Eventbus (EB) 处理的。
流程如下
JIS -> request API (EB) -> {API Call Handler} -> Send Response (EB) -> JIS -> Handle response.
您可能已经猜到的问题是,当请求 API 事件被触发时,Intent 服务会自行完成并且不处理响应事件。
临时解决方案:
我以一种肮脏的方式解决这个问题的方法是在触发事件后立即调用 Thread.sleep(400)。(API 大约需要 150 毫秒来响应)
这可确保在 API 响应事件到达时 JIS 仍在处理响应。
我想确认这是否是正确的方法(因为这对我来说感觉像是一种蛮力)或者是否有更清洁的方法。