Luta por variáveis ​​de vida. Ou como tentei tornar a vida mais fácil para desenvolvedores Android

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



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



, .





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








All Articles