如何让我的 Android 应用程序与我自己的 RESTful API 应用程序持续连接以持续检索数据?
How do I keep my Android app continuously connected with my own RESTful API to retrieve data continuously?
请大家帮帮我!请
我正在使用 retrofit 连接我的 RESTful API,它在 Express 和 Node 上是 运行。现在我想从 api 连续获取我的数据意味着我的应用程序应该与 api 连续连接。
Retrofit 将请求排入队列,我们需要让它一次又一次地发送。我已经尝试在服务中创建改造调用,但它不断反映 UI,这意味着它会不断进行调用。
那我该怎么做呢?我需要将我的 restful 服务设为实时吗?或者有什么办法可以打电话吗? (请不要告诉我有关 Firebase 或 Parse 或任何东西的信息)
我不太了解您的要求,但如果您真的需要持续保持与后端的连接,那么 REST 可能不是实现此目的的好方法。
如果你不想像你提到的那样得到一些专有解决方案,有很多方法可以实现你想要的,使用像 protobuf
这样的数据格式的套接字连接和像这样的方法RPC
进行交流。
我以前没有用过它,但经过简短的谷歌搜索后,我发现 http://www.grpc.io/ 听起来很有希望。
如果你想保持 REST 作为你的 API 类型,那么你将需要求助于基于轮询的方法或者可能是基于推送(通知)的方法,你只需不断轮询你的端点,或在收到推送通知后开始轮询新数据。
编辑:
如评论中所述...在您的情况下,您可以查看 https://socket.io/blog/native-socket-io-and-android/ 以将实时数据从后端连接到应用程序。如果您的后端能够处理与客户保持大量联系所带来的要求,它就可以正常工作。
您可以通过在处理程序中启动 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。
请大家帮帮我!请
我正在使用 retrofit 连接我的 RESTful API,它在 Express 和 Node 上是 运行。现在我想从 api 连续获取我的数据意味着我的应用程序应该与 api 连续连接。
Retrofit 将请求排入队列,我们需要让它一次又一次地发送。我已经尝试在服务中创建改造调用,但它不断反映 UI,这意味着它会不断进行调用。
那我该怎么做呢?我需要将我的 restful 服务设为实时吗?或者有什么办法可以打电话吗? (请不要告诉我有关 Firebase 或 Parse 或任何东西的信息)
我不太了解您的要求,但如果您真的需要持续保持与后端的连接,那么 REST 可能不是实现此目的的好方法。
如果你不想像你提到的那样得到一些专有解决方案,有很多方法可以实现你想要的,使用像 protobuf
这样的数据格式的套接字连接和像这样的方法RPC
进行交流。
我以前没有用过它,但经过简短的谷歌搜索后,我发现 http://www.grpc.io/ 听起来很有希望。
如果你想保持 REST 作为你的 API 类型,那么你将需要求助于基于轮询的方法或者可能是基于推送(通知)的方法,你只需不断轮询你的端点,或在收到推送通知后开始轮询新数据。
编辑:
如评论中所述...在您的情况下,您可以查看 https://socket.io/blog/native-socket-io-and-android/ 以将实时数据从后端连接到应用程序。如果您的后端能够处理与客户保持大量联系所带来的要求,它就可以正常工作。
您可以通过在处理程序中启动 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。