java - 与 MVVM 的套接字连接

标签 java android mvvm

我正在尝试使用 MVVM 架构构建一个聊天应用程序,但我不知道将我的套接字连接类放在哪里,我需要一个想法或起点等。

单一数据源原则

我正在使用单一数据源的真实原则。举个例子:如果消息从套接字服务器发送到应用程序,我的套接字类应该将其保存到数据库,然后应该使用实时数据将其从数据库提供给观察者(因此它们将成为 View 模型)。

我的应用架构

我的应用程序包含不同的 Activity (聊天屏幕、对话屏幕等),这些 Activity 将观察到我的套接字连接存储库类。此外,如果用户关闭应用程序,我的套接字连接将随着应用程序终止。我不想要任何后台连接。

我在问什么?

实现此功能的最佳方法是什么:

1) Socket 类应该使用实时数据,因为 Activity 会观察到它。所以它应该是一个存储库。
2)我的套接字类应该在应用程序打开时始终存在。

我应该为套接字存储库使用什么?服务或单例类或不同的东西?你有什么建议?我应该从哪里开始套接字连接存储库?从应用程序类或不同的东西?

最佳答案

在新的 Arch 组件库中查看 android 的新 LiveData 和 Lifecycle 架构。

有了它,您可以从任何 Activity 或 fragment 中观察 LiveData 对象。它从您的应用程序开始,收到有关任何生命周期更改的通知,然后随着您的应用程序终止。另外:在配置更改时不会被破坏。

唯一的问题是必须启动 LiveData 对象。我可以在 App 类中完成。或者,如果您的应用是单 Activity 架构,则在 Activity 中。

关于java - 与 MVVM 的套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659164/

相关文章:

android - 跨平台推送 API

java - 返回 Double 类型的值时出错?

c# - INotifyDataErrorInfo - 模型或 ViewModel

c# - 绑定(bind) ObservableCollection 对象麻烦

java - ArrayList<String> 未设置最小容量

java - FluentWait selenium 使用 ThreadLocal<RemoteWebDriver>

Android Studio,删除模块后出错

java - 如何让 PSOldGen 扩展以容纳非常大的对象?

java - mdimport 是什么以及在哪里

java - BindingAdapter 未被识别为适用于具有泛型的属性