我真的到处都在搜索这个,我可以同时发出同步和异步数据请求,但我实际上无法理解哪个异步与什么?什么与什么同步?
原文由 Mohammad Elsayed 发布,翻译遵循 CC BY-SA 4.0 许可协议
我真的到处都在搜索这个,我可以同时发出同步和异步数据请求,但我实际上无法理解哪个异步与什么?什么与什么同步?
原文由 Mohammad Elsayed 发布,翻译遵循 CC BY-SA 4.0 许可协议
call.execute()
在当前线程上运行请求。
call.enqueue(callback)
在后台线程上运行请求,并在当前线程上运行回调。
您通常不想在主线程上运行 call.execute()
因为它会崩溃,但您也不想在后台线程上运行 call.enqueue()
。
原文由 EpicPandaForce 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答11.7k 阅读✓ 已解决
3 回答953 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答830 阅读✓ 已解决
2 回答942 阅读
2 回答882 阅读
1 回答814 阅读
当您异步时,这意味着不在前台(它在完成给定任务时不会阻塞用户界面),另一方面,同步意味着在前台,而您的应用程序在 UI 消耗的同一线程中执行操作。
在你的情况下(通过改造或任何其他 REST api 发出 REST 请求)你不能在前台发出请求,你必须在后台线程中发出请求。
在改造的情况下,您可以通过以下方法提出请求:
所以你有两个选择:要么直接调用 call.enqueue,要么你可以使用 call.execute 但用服务包装(我的意思是你必须自己处理后台工作)。