如何拥有 2 个参数化 sharedViewModel 实例?
How to have 2 instances of parametrized sharedViewModel?
val viewModel: StuffViewModel by sharedViewModel { parametersOf(arguments.id) }
现在,当我有同一个片段的多个实例时 class,我如何才能为每个片段创建新的实例?我认为那是 parametersOf()
所做的,但它似乎不是真的。
是的,它必须是 sharedViewModel
,因为某些逻辑会导致一些复杂的片段操作,并且视图模型绑定到服务,而且只共享实例而不是共享实例似乎是一个更好的主意每次都重新创建它们并重新绑定服务。
我想要的:
/---------Activity---------\
| |
| StuffViewModel(1) |
| StuffViewModel(2) |
| |
| /---StuffFragment(1)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
| /---StuffFragment(2)---\ |
| | | |
| | *StuffViewModel(2) | |
| | | |
| \----------------------/ |
| |
\--------------------------/
我得到的:
/---------Activity---------\
| |
| StuffViewModel(1) |
| |
| /---StuffFragment(1)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
| /---StuffFragment(2)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
\--------------------------/
我们当时没有找到任何解决方案来拥有单独的 ViewModel 实例。
val viewModel: StuffViewModel by sharedViewModel { parametersOf(arguments.id) }
现在,当我有同一个片段的多个实例时 class,我如何才能为每个片段创建新的实例?我认为那是 parametersOf()
所做的,但它似乎不是真的。
是的,它必须是 sharedViewModel
,因为某些逻辑会导致一些复杂的片段操作,并且视图模型绑定到服务,而且只共享实例而不是共享实例似乎是一个更好的主意每次都重新创建它们并重新绑定服务。
我想要的:
/---------Activity---------\
| |
| StuffViewModel(1) |
| StuffViewModel(2) |
| |
| /---StuffFragment(1)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
| /---StuffFragment(2)---\ |
| | | |
| | *StuffViewModel(2) | |
| | | |
| \----------------------/ |
| |
\--------------------------/
我得到的:
/---------Activity---------\
| |
| StuffViewModel(1) |
| |
| /---StuffFragment(1)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
| /---StuffFragment(2)---\ |
| | | |
| | *StuffViewModel(1) | |
| | | |
| \----------------------/ |
| |
\--------------------------/
我们当时没有找到任何解决方案来拥有单独的 ViewModel 实例。