Lucha por las variables de la vida. O cómo traté de hacer la vida más fácil a los desarrolladores de Android

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()
      
      



, Parcelize ().





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) 
}
      
      



. ! . , @Parcelize ( ).





.





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








All Articles