使用 Android 应用程序、服务、套接字 + 谷歌地图 API - 啥是正确的方法?

Posted

技术标签:

【中文标题】使用 Android 应用程序、服务、套接字 + 谷歌地图 API - 啥是正确的方法?【英文标题】: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?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

谢谢!不需要推送通知。但是关于广播接收器的一个小问题..我是否需要为每个活动创建 1 个接收器(当需要活动和服务之间的通信时)? 您可以创建一个BaseActivity,它可能具有广播接收器逻辑和一个抽象方法(onMessageReceived)。每当您收到来自服务的消息时,都会调用此方法。或者,您可以考虑使用 EventBus 库并从服务中引发事件。感兴趣的活动/片段可以订阅这些事件。

以上是关于使用 Android 应用程序、服务、套接字 + 谷歌地图 API - 啥是正确的方法?的主要内容,如果未能解决你的问题,请参考以下文章

关于我的服务器和客户端 android 应用程序中的套接字的问题

Android 移动网络套接字实现 使用额外数据写入

Android - 服务器套接字

当我关闭蓝牙服务器套接字或蓝牙套接字时,Android 应用程序意外退出

如何在 Android 上建立套接字连接

Android,错误套接字异常 (SOCKS)