请帮帮我们!请
我正在使用 retrofit 连接我在Express和Node上运行的RESTful API。现在我想继续从api获取我的数据意味着我的应用程序应该与api连续连接。
Retrofit将请求排入队列,我们需要让它一次又一次地发送。我尝试过在服务中创建一个改装调用,但它会不断反映UI,这意味着它会持续调用。
那我怎么能这样做?我是否需要实时提供我的休息服务?或者有没有办法打这个电话? (请不要告诉我有关Firebase或Parse或Anything的信息)
答案 0 :(得分:1)
我不太了解您的要求,但如果您确实需要不断与后端建立连接,那么REST可能不是实现这一目标的好方法。
如果您不希望得到像您所提到的某些专有解决方案,那么有很多方法可以实现您的目标,使用带有protobuf
等数据格式的Socket Connections和{{1}这样的方法。 1}}沟通。
我之前没有使用它,但经过短暂的谷歌搜索后,我发现http://www.grpc.io/听起来很有希望。
如果您希望将REST作为您的API类型,那么您将需要采用基于轮询的方法或基于推送(通知)的方法,您只需不断轮询您的端点,或开始轮询新数据收到推送通知后。
编辑:
正如评论中所述......在您的情况下,您可以查看https://socket.io/blog/native-socket-io-and-android/,将后端的实时数据连接到应用。如果您的后端能够满足与客户保持密切联系的要求,它将会正常工作。
答案 1 :(得分:-1)
您可以通过在Handler中启动API调用来执行此操作,该调用将在一个时间间隔内运行。每次处理程序运行时它都会调用您的API。 你可以这样做:
Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
//Initiate your API here
handler.postDelayed(this, 5000);
}
};
handler.postDelayed(r, 5000);
它会在每5秒钟(5000毫秒)内启动您的API。