Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Android 如何存储片段中的数据,以便在MVVM体系结构中重用?_Android_Android Fragments_Mvvm - Fatal编程技术网

Android 如何存储片段中的数据,以便在MVVM体系结构中重用?

Android 如何存储片段中的数据,以便在MVVM体系结构中重用?,android,android-fragments,mvvm,Android,Android Fragments,Mvvm,我知道活动/片段必须创建ViewModel,并且ViewModel可以从ViewModelFactory创建。ViewModel本身使用一个数据存储库来处理来自数据库或网络的数据。而且ViewModel不是一个单例 例如,我有一个活动,它有两个片段,片段A和片段B,我只能逐个访问它们。在片段A中,我从来自网络或数据库的存储库加载了一些数据。当我导航到片段B时,片段a中的数据丢失,因此我必须从网络或数据库中加载它,这需要时间。因此,我希望将数据存储在运行时的某个位置 我的问题是,解决这个问题的最佳

我知道活动/片段必须创建ViewModel,并且ViewModel可以从ViewModelFactory创建。ViewModel本身使用一个数据存储库来处理来自数据库或网络的数据。而且ViewModel不是一个单例

例如,我有一个活动,它有两个片段,片段A和片段B,我只能逐个访问它们。在片段A中,我从来自网络或数据库的存储库加载了一些数据。当我导航到片段B时,片段a中的数据丢失,因此我必须从网络或数据库中加载它,这需要时间。因此,我希望将数据存储在运行时的某个位置


我的问题是,解决这个问题的最佳方法是什么?可以在存储库中创建一个单例吗?

您需要使用一个共享的viewModel,一个在片段之间共享并在某些片段之间导航的viewModel。
实现取决于您在项目中使用的内容。您可以在活动中创建ViewModel,并从片段中访问它们,并将共享数据放在此ViewModel中。或者,如果您使用的是导航组件,则每个导航图都可以有一个共享的ViewModel。使用dagger和koin,您可以为您的ViewModel定义一个服装范围。请参阅以下链接: