Houve uma ideia. Reúna um grupo de variáveis importantes em um lugar para que juntas se tornem algo mais. E, quando necessário, eles podem ser usados quando o programador precisa de valores que não dependem dos ciclos de vida e liberação de memória de aplicativos minimizados.
Ideia
A ideia surgiu de um problema. O problema surgiu do ressentimento.
, , , .
, , .
, -, , , . "" . ?
. , , , : , , .
...
? , : bundle ..
? , , ?
, - , -, . , .
SavedStateHandle MVVM. .
()
, , . @Unkillable
:
@Unkillable
data class SampleFragmentState(
val testValue: Double,
val testLiveData: MutableLiveData<Double>
) : EmptyState()
ViewModel. , AndroidViewModel, ViewModel.
class SampleViewModel(
application: Application,
savedStateHandle: SavedStateHandle
) : AndroidStateViewModel(application, savedStateHandle) {
override fun provideState() = createState<UnkillableSampleFragmentState>()
}
UnkillableSampleFragmentState .
, ViewModel , . , Google SavedStateHandle.
activity?.application?.let { application ->
viewModel = ViewModelProvider(this, SavedStateViewModelFactory(application, this))
.get(SampleViewModel::class.java)
}
.
init {
// get values example
Log.d("StateLog", "0 value ${state.testValue}")
Log.d("StateLog", "1 value ${state.testLiveData?.value}")
}
fun onSetDataClicked() {
// set values example
state.testValue = 2.2
state.updateTestLiveDataValue(3.3) // yourLiveData.value = 3.3
state.postUpdateTestLiveDataValue(3.3) // yourLiveData.postValue(3.3)
}
, .
O objetivo desta biblioteca é simplificar o desenvolvimento e liberar o desenvolvedor da escrita de código, desde que trabalhe com a preservação do estado da aplicação. Também conseguimos limpar o código de todas essas variáveis que precisam ser salvas. Além disso, agora eles estão logicamente separados da massa geral e não atrapalham o código, o que parece muito bom. No entanto, por enquanto, ele só funciona em MVVM do Google.
UnkillableSavedState GitHub Repository Link