如何让我的Android应用程序持续与我自己的RESTful API连接以连续检索数据?

时间:2017-06-17 09:13:32

标签: android rest real-time

请帮帮我们!请

我正在使用 retrofit 连接我在Express和Node上运行的RESTful API。现在我想继续从api获取我的数据意味着我的应用程序应该与api连续连接。

Retrofit将请求排入队列,我们​​需要让它一次又一次地发送。我尝试过在服务中创建一个改装调用,但它会不断反映UI,这意味着它会持续调用。

那我怎么能这样做?我是否需要实时提供我的休息服务?或者有没有办法打这个电话? (请不要告诉我有关Firebase或Parse或Anything的信息)

2 个答案:

答案 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。