小编sud*_*esh的帖子

使用改造和 kotlin 通道实现长轮询

我正在尝试实现生命周期感知的长轮询(在活动/片段中)。轮询将限定在每隔固定时间间隔向服务器发送 API 请求的片段。但是,我无法实施它。

这就是我希望实现的样子

  • 在客户端有一个硬超时,而不考虑在接收响应时产生的任何额外延迟。
  • 在发送下一个请求之前等待上一个 API 调用的响应。即,由于轮询间隔,轮询队列中的请求应等待响应,而不管其优先级如何

考虑:

HARD_TIMEOUT = 10 秒

POLLING_INTERVAL = 2 秒 在此处输入图片说明

 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
Run Code Online (Sandbox Code Playgroud)

对于这个用例,我想使用轮询而不是套接字。任何想法/解决方案将不胜感激。谢谢你。

android polling long-polling android-lifecycle kotlin

6
推荐指数
1
解决办法
1460
查看次数

在视图模型中使用大量实时数据的性能开销

我需要使用多个recyclerviews。在以下情况下,我将至少需要6个recyclerviews。6 = 1用于卧式recyclerview + 3用于viewpager中的每个片段+ 1用于recylerview + 1用于网格布局。

回收者查看实时数据

由于数据复杂性巨大,每个适配器数据都取决于其他适配器的变化,因此我决定使用android jetpack中引入的体系结构组件。因此,首先,我将集成视图模型和实时数据。稍后合并会议室数据库(现有数据库在SQLite中)

正如我将使用多个livedata来监视适配器数据更改一样。我想清除对视图模型和实时数据的性能方面的怀疑。

使用大量实时数据的性能开销

  1. 我将需要6到7个实时数据来观察每个适配器数据的变化。为了了解性能,假设要使用大约50到60个实时数据。

  2. 是最佳做法还是建议仅在房间内使用实时数据?

    我们可以在适配器数据或简单的原始类型(例如布尔值,整数等)上使用它吗(例如:isLoading:MutableLiveData,inputText:MutableLiveData textField字符串以监视更改。)

假设某人可能要求它包含在一个表单上,该表单可能具有多个数字编辑文本,下拉菜单,多项选择等,每个文本都附加有实时数据。

  1. 实时数据如何在内部工作,它是否使用一些昂贵的资源来监视变量的变化

android viewmodel android-recyclerview android-livedata

5
推荐指数
0
解决办法
488
查看次数