Hubo una idea. Reúna un grupo de variables importantes en un solo lugar para que juntas se conviertan en algo más. Y cuando sea necesario, podrían usarse cuando el programador necesite valores que no dependan de los ciclos de vida y la liberación de memoria de las aplicaciones minimizadas.
Idea
La idea surgió de un problema. El problema surgió del resentimiento.
, , , .
, , .
, -, , , . "" . ?
. , , , : , , .
...
? , : 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)
}
, .
El propósito de esta biblioteca es simplificar el desarrollo y descargar al desarrollador de la escritura de código, siempre que trabaje con la preservación del estado de la aplicación. También logramos limpiar el código de todas estas variables que deben guardarse. Además, ahora están lógicamente separados de la masa general y no desordenan el código, lo que se ve bastante bien. Sin embargo, por ahora, solo funciona en MVVM de Google.
Enlace del repositorio de GitHub de UnkillableSavedState