Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Kotlin Android应用程序的通用应用程序状态架构?_Java_Android_Reactjs_Kotlin_Redux - Fatal编程技术网

Java/Kotlin Android应用程序的通用应用程序状态架构?

Java/Kotlin Android应用程序的通用应用程序状态架构?,java,android,reactjs,kotlin,redux,Java,Android,Reactjs,Kotlin,Redux,在Java或Kotlin Android应用程序中,管理状态最常用的模式是什么 我将从React Native迁移到Kotlin,在那里我使用了React Redux架构 现在最常用的架构是什么?我怀疑2020年的Android应用程序是否仍在使用具有双向通信的每个组件状态,就像我在React中学习Redux之前所做的那样。Android应用程序的开发有很多模式 您可以在此处阅读: 您必须为每个项目分别选择最佳模式。 对于状态管理,我建议您使用“模型-视图-控制器”,也称为MVC,我将给您一些自

在Java或Kotlin Android应用程序中,管理状态最常用的模式是什么

我将从React Native迁移到Kotlin,在那里我使用了React Redux架构


现在最常用的架构是什么?我怀疑2020年的Android应用程序是否仍在使用具有双向通信的每个组件状态,就像我在React中学习Redux之前所做的那样。

Android应用程序的开发有很多模式 您可以在此处阅读: 您必须为每个项目分别选择最佳模式。
对于状态管理,我建议您使用“模型-视图-控制器”,也称为MVC,我将给您一些自以为是的建议

一个相对简单的体系结构是MVVM,在MVVM中,您有一个viewModel来保存配置更改期间的状态。它与架构组件很好地集成,这将使您的生活更加轻松,同时考虑到Android的生命周期

一种更复杂、更强大的方法是RxJava。您可以将数据库用作真相的中心来源,所有数据流都将通过它。我知道这听起来很糟糕,但表演还行。一切都是异步完成的。对于一个复杂的应用程序来说,这是一个很好的解决方案,但对于一个小的应用程序来说,这可能是一个过度的解决方案。Rx的学习曲线会更陡峭,但很多人喜欢它是有原因的

您还可以使用Kotlin协程流而不是Rx,并将其与MVVM耦合。据我所知,目前它不如RxJava强大,但它更容易理解,并且导致更少的样板文件

此外,您可以将其塑造得更像MVI。你可以将你的应用程序分成几个层——UI、业务逻辑、API、持久性。您可以通过操作和结果交付所有数据来隔离它们。这意味着您将有单独的类来保存每个层上的数据。它使事情变得干净,但对于一个小应用程序来说可能是一种过度的杀伤力。您可以通过Rx和Flow实现这一点

不要使用MVP,它有很多固有的问题。我认为你也不应该研究MVC。弗利特太年轻了。我通常避免使用由公司维护的解决方案,如Airbnb的MvRx,但如果您愿意接受这个想法,有一些有趣的解决方案

您可以使用Dagger2进行依赖项注入,Google甚至记录了这一点。或者看看Koin,它更简单,但可能没有那么强大

关于UI,我喜欢声明式UI的想法。但这对我来说是一个过渡期——我期待着一个稳定版本的Jetpack Compose。但在此之前,我一直坚持使用基于视图的旧UI堆栈。你可以通过Facebook或类似的网站查看Litho,但正如我所说的,当有来自谷歌/Jetbrains的消息传来时,我对这类公司使用工具持谨慎态度


您可以使用ViewBinding引用视图。

您可以在视图或活动中本地存储状态。除了在React编程中,应用程序状态从未真正作为一种模式在任何地方流行起来。主要是因为它不需要。在React中使用它的主要原因是因为它是平台中缺陷的一个解决方案(该缺陷是在UI之外没有层来控制和存储状态)。这里不是这样。如果您需要活动之间的状态,根据您需要它的位置/原因,有多种解决方案。