如何在具有单个 activity 和多个片段的客户端服务器架构中更新 Android 中的 RecyclerViews

How to update RecyclerViews in Android in a ClientServer architecture with single activity and mutiple fragments

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

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

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

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

没有人进一步了解我如何实现它吗?当我在这个问题上苦苦挣扎时,我将非常感谢您的意见,非常感谢您的帮助。

在这里您可以看到应用架构的粗略草图。

事实上,您的问题的答案不是一篇文章就能回答的,需要多篇文章来详细说明。所以我刚才提到了一些links/articles关于每个部分的实现。另外,我试图从更高的角度看问题。然后仔细看看每个部分。

我把你的问题分为两部分:

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

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

  1. 如果应用程序可以访问互联网,我建议使用 Firebase Realtime Database:

The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client. When you build cross-platform apps with our iOS, Android, and JavaScript SDKs, all of your clients share one Realtime Database instance and automatically receive updates with the newest data.

此外,Google 提供了一个聊天项目 codelabs. another example

  1. 使用java套接字到运行套接字服务器并连接到它。 article1 , article2

2。演示:读取数据并更新 UI

实现 send/receive 消息后,我们可以使用 ViewModel 并将消息保存在 LiveData 中。然后观察fragment/activity中的实时数据并在RecyclerView中显示消息。

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