有什么方法可以一直调用API并在Android中使用Retrofit获取最新数据吗?

Is there any methods to keep calling API and fetch the latest data using Retrofit in Android?

我正在创建一个类似于队列显示的应用程序。对于我的场景,队列数据总是在更新。除了使用 Handler 之外,是否有任何方法可以让我有效地调用 API 来获取最新数据。使用处理程序,可能可以解决我的问题,但这不是一个好习惯,因为每 5 秒持续调用 API,可能会导致服务器过载/内存问题?顺便说一句,API 是 restful API.

我了解到您需要在服务器上有最新数据时更新数据。

我认为您需要为服务器和客户端申请 Socket.io。当服务端有新数据时,会通过socket通知客户端。

方式一:服务端向客户端发送事件时,会发送最新的数据。

方法二:客户端收到事件后,会调用API获取最新的数据。

这是可取的,因为当用户数量很大时,它会节省资源。

我曾经遇到过像你这样的问题,我发现让客户一直打电话给 API 是一件坏事。

另一种方式是当用户点击或操作时你会调用API更新数据,但不推荐这样做

您可以使用 Retrofit 实现 RxJava,以便在您的 Android 应用程序中每隔 x 秒调用一次 Retrofit 服务。

RxJava - is a Java VM implementation of ReactiveX a library for composing asynchronous and event-based programs by using observable sequences

为了创建一个在特定时间间隔后运行的 Retrofit 服务,我们可以使用以下内容:

  • 处理程序(用于将数据从后台线程传递到 UI 线程)
  • RxJava

使用 RxJava 我们可以做的远不止于此,而且使用 RxJava 运算符也非常容易。 我们可以使用间隔运算符在每个给定时间段后调用某个方法(在本例中为 retrofit 网络调用)。

Observable.interval 运算符用于在特定时间间隔后发出值。它看起来像这样:

Observable.interval(1000, 5000,
                TimeUnit.MILLISECONDS);

1000 是发射开始前的初始延迟,每 5 秒重复一次。

我们可以订阅我们的观察者,它会在每 5 秒后调用 Retrofit 方法。

在某些时间间隔后调用 Retrofit 服务在提供实时更新的应用程序中相当常见,例如 Cricket Score 应用程序等

更多详情,