【问题标题】:Concurrent Android network requests并发 Android 网络请求
【发布时间】:2021-04-18 01:15:15
【问题描述】:

我正在 Android 中构建一个片段,用于显示保存在服务器上的一些数据。只要用户在这个片段上,我想每 x 秒轮询一次服务器。此外,一旦用户离开此片段,我想停止此过程。这个问题的最佳解决方案是使用协程还是线程?感谢您的帮助!

【问题讨论】:

    标签: android concurrency kotlin-coroutines


    【解决方案1】:

    轮询绝不是一个好的选择,因为您将继续浪费资源,而服务器可能没有新数据可提供。但是,如果您仍然热衷于这样做,您可以使用任何选择,即协程和线程。在线程中,您必须自己管理它的生命周期,而在协程中,您不必担心任何事情,因为 CoroutineScope 会为您处理所有这些。使用Coroutines 的一个动机是提供operators,例如,您可以在flowsmapswitchMap 上使用。

    更好的解决方案是使用SNSfirebaseRemoteMessagingService 通知您的应用程序客户端,然后您可以请求服务器。

    【讨论】:

    • 感谢您的帮助!我想知道既然协程是一种选择,那么线程是否可以使用
    • 线程是并且总是可以使用的。它是核心 API 之一,是在应用程序中创建线程的直接句柄。另外,使用 Kotlin 协程是对 kotlin 协程库的外部依赖。但是,对于如何正确使用线程,很多人并没有清晰的概念。如果您认为自己属于该区域,则最好使用协程库,因为它可以保护您免受某些情况的影响。但是,您仍然需要担心协程的异常处理 (google CoroutineCancellationException)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2013-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    相关资源
    最近更新 更多