【发布时间】:2017-10-17 17:23:48
【问题描述】:
我目前正在使用 Anko 的 doAsync 来处理异步任务。 具体来说,我使用它来解析响应 json 到数据对象的 ArrayList,如下所示:
// Asynchronously parse server response
doAsync {
val itemlist = parseResponse(response)
uiThread {
Otto.INSTANCE.post(UpdateRedeemedVoucherViewsEvent(itemlist))
}
}
在大多数情况下,例如在 Google Pixel (Android 8.0.0) 上,这都能正常工作。我的对象被解析,Otto 总线事件 将被发布到 ui 线程。
但在极少数情况下,此过程会失败。 到目前为止,我注意到 ui 线程调用不会在 Galaxy S5 Mini (Android 5.1.1) 上触发。虽然我的数据被解析没有任何错误或异常,但 uiThread 括号中的代码 sn-p 不会被执行。
到目前为止,我无法确定这种行为的任何原因。没有 logcat 日志,什么都没有。没有计划何时出现此错误。
有人对 kotlin 和/或 Anko 有相同或类似的问题吗?
更新:我自己找到了解决方案,请参阅下面的答案以获得解释。
【问题讨论】:
-
你能发布你的
parseResponse代码吗?
标签: android asynchronous kotlin anko