As versões MVVMCROSS 3.x e 4.x têm várias diferenças em relação ao ciclo de vida do ViewModel, centradas principalmente na maneira como os modelos são construídos, inicializados e gerenciados.
mvvmcross 3.x
No MVVMcross 3.x, o ciclo de vida do ViewModel segue uma sequência conhecida como Cirs: Construction, init (), ReloadState () e Start (). Esta sequência é usada para inicializar e gerenciar o ViewModels. Aqui está um colapso:
- Construção: O viewmodel é instanciado usando o contêiner do IOC, permitindo a injeção de dependência. É aqui que os serviços e outras dependências são injetados no ViewModel.
- init (): Este método é usado para inicializar os parâmetros de navegação. É chamado após a construção e é onde você normalmente configuraria quaisquer dados ou parâmetros iniciais passados para o ViewModel.
- RELOADSTATE (): Este método é responsável por reidratar o estado do ViewModel após a Tombstoning, que ocorre quando o aplicativo é suspenso e depois retomado devido a condições de memória baixa.
- Start (): Este método é chamado quando a inicialização e a reidratação estão concluídas. Normalmente, é usado para iniciar quaisquer operações ou tarefas em andamento.
mvvmcross 4.x
MVVMCROSS 4.X continua a usar a sequência CIRS, mas apresenta algumas mudanças e melhorias:
- A construção permanece a mesma, usando o COI para injeção de dependência.
- init () ainda inicializa os parâmetros de navegação, mas agora é mais flexível, permitindo parâmetros de navegação digitados.
- ReloadState () continua a lidar com a reidratação do estado após a Tombstoning.
- start () é semelhante, mas pode ser usado com menos frequência devido à introdução de mais métodos de inicialização assíncrona.
Uma mudança significativa no MVVMcross 4.x é o suporte contínuo para os parâmetros de navegação digitados, o que permite a passagem de dados mais estruturados entre os modelos ViewModels. Além disso, o MVVMcross 4.x estabelece as bases para futuras melhorias na navegação e gerenciamento do ciclo de vida, que são aprimoradas ainda mais no MVVMCROSS 5.X.
Diferenças -chave
- Parâmetros de navegação: MVVMCROSS 3.x passa os parâmetros de navegação diretamente para o método `init ()`, enquanto o MVVMCROSS 4.x suporta parâmetros de navegação digitados, facilitando a passagem de dados complexos entre os modelos ViewModels.
- Flexibilidade do ciclo de vida: MVVMCROSS 4.x fornece mais flexibilidade no manuseio de ciclos de vida do ViewModel, especialmente com a introdução de métodos de inicialização assíncrona.
- Suporte Tombstoning: Ambas as versões suportam Tombstoning, mas o MVVMCROSS 4.x continua a refinar esse processo, garantindo que os modelos do ViewModels possam salvar e restaurar efetivamente seu estado.
No geral, o MVVMcross 4.x se baseia na fundação estabelecida em 3.x, aprimorando a navegação, o gerenciamento do ciclo de vida e a flexibilidade no manuseio de dados complexos e operações assíncronas.
Citações:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://stackoverflow.com/questions/49322704/mvvmcross-view-model-lifeccycle-restore-not-não
[3] https://stackoverflow.com/questions/15961664/viewmodel-lifecycle-when-does-it-get-disised
[4] https://stackoverflow.com/questions/71959649/does-mvvmcross-have-built-in-message-for-viewmodel-to--tell-view-when-viewappea
[5] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[6] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-about-views-and-viewmodels
[8] https://www.ramotion.com/blog/what-is-mvvm/
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[11] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[12] https://github.com/mvvmcross/mvvmcross/issues/2738