【问题标题】:Using Android app, service, sockets + google maps API - What is the right way?使用 Android 应用程序、服务、套接字 + 谷歌地图 API - 什么是正确的方法?
【发布时间】:2016-11-24 02:50:55
【问题描述】:

我的 android 应用程序在(应用程序)打开时需要与服务器通信。 为此,我想使用 socketIO Java 客户端。

我是否需要对套接字使用 BoundService(它应该在后台运行)?活动和服务通信需要成为可能。为此,我可以使用广播意图。

以及需要在哪里建立套接字连接?在 MainActivity onCreate 还是在服务 onStartCommand 方法中?

编辑:
在谷歌地图准备好之前来自我的服务器(套接字)的请求。这意味着,我无法在地图等中添加标记。最好的解决方案是什么?向服务器发出“Google maps ready”之类的东西,然后从服务器发出到 android?

【问题讨论】:

    标签: java android socket.io


    【解决方案1】:

    我认为您应该在服务中创建套接字,这样您就可以轻松地从任何活动/片段发送消息。只需确保在应用程序进入后台时关闭套接字即可。

    当套接字未连接时,您可以依赖推送通知。一旦用户回到您的应用程序,您就可以再次建立套接字,这样您就可以节省电池。

    确保使用部分唤醒锁以防您需要执行某些操作 应用程序在后台时对套接字进行的操作。

    编辑: 如果您希望消息仅在地图准备好后才出现,那么可能会在地图渲染后创建套接字。一种可能的替代方法是将来自服务器的消息存储在队列中,直到它被处理。

    【讨论】:

    • 谢谢!不需要推送通知。但是关于广播接收器的一个小问题..我是否需要为每个活动创建 1 个接收器(当需要活动和服务之间的通信时)?
    • 您可以创建一个BaseActivity,它可能具有广播接收器逻辑和一个抽象方法(onMessageReceived)。每当您收到来自服务的消息时,都会调用此方法。或者,您可以考虑使用 EventBus 库并从服务中引发事件。感兴趣的活动/片段可以订阅这些事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2014-10-29
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多