首页 > 解决方案 > 如何在具有单个活动和多个片段的 ClientServer 架构中更新 Android 中的 RecyclerViews

问题描述

我想创建一个具有客户端和服务器的应用程序(所以基本上它们是 2 个不同的应用程序)。在每个客户端(和服务器)中,我使用单活动多片段方法,并且在每个应用程序中我都有一个 SQLite 数据库。在某些片段中,我使用了 RecyclerView。现在服务器应该能够分别更新每个单独的客户端(和数据库)中的 recyclerview,反之亦然,这意味着客户端应该能够触发服务器的 recyclerView 和数据库的更新。

现在我的问题是,我通常如何在 Android 中做到这一点?我进行了 Internet 搜索,并且经常使用 ViewModel 和 LiveData 方法在不同片段之间的应用程序内进行通信。现在我想知道,我是否也可以将这些方法用于我的目的?我还找到了一个关于应用程序之间通信的官方 Android 开发人员页面https://developer.android.com/training/basics/intents但在这里他们使用意图,我认为他们不使用单活动多片段方法.

那么是否可以为此使用 ViewModel 和 LiveData 方法,还是我必须使用意图方法?

更新:有人告诉我,我不能将 ViewModel 或 LiveData 用于我的目的。你知道我怎样才能做我想做的事吗?所以客户端应该能够向服务器发送一些东西,服务器应该能够向客户端的数据库发送信息,并且基于此客户端应该更新他们的 Recyclerview。我可以为此使用套接字吗?

没有人对我如何实现这一点有进一步的想法吗?当我在这个问题上苦苦挣扎时,我非常感谢您的评论,并非常感谢您的帮助。

在这里,您可以看到应用架构的粗略草图。在此处输入图像描述

标签: androidandroid-fragmentsandroid-recyclerviewclient-server

解决方案


实际上,您的问题的答案不适合一篇文章,需要各种详细的文章。所以我只是提到了一些关于每个部分的实现的链接/文章。另外,我尝试从更高的角度看待这个问题。然后仔细看看每个部分。

我将您的问题分为两部分:

1. 基础设施:客户端和服务器之间的数据通信

根据您的评论,这些应用程序未安装在同一设备上,但它们在网络中并且可以一起ping并且通信的消息是结构数据(菜肴的顺序),您至少有2个选项:

  1. 如果应用程序可以访问 Internet,我建议使用Firebase 实时数据库

Firebase 实时数据库是一个云托管数据库。数据以 JSON 格式存储并实时同步到每个连接的客户端。当您使用我们的 iOS、Android 和 JavaScript SDK 构建跨平台应用程序时,您的所有客户端共享一个实时数据库实例并自动接收最新数据的更新。

此外,谷歌还提供了一个聊天项目codelabs另一个例子

  1. 使用 java socket 运行套接字服务器并连接到它。第1条,第2条

2. Presentation:读取数据和更新UI

实现发送/接收消息后,我们可以ViewModel在 LiveData 中使用和保存消息。然后观察片段/活动中的 livedata 并在RecyclerView.

谷歌也提供了一些关于这些主题的代码实验室:


推荐阅读