Variabel perjuangan untuk hidup. Atau bagaimana saya mencoba membuat hidup lebih mudah bagi pengembang Android

Ada ide. Kumpulkan sekelompok variabel penting di satu tempat sehingga bersama-sama mereka menjadi sesuatu yang lebih. Dan bila diperlukan, mereka dapat digunakan saat pemrogram membutuhkan nilai yang tidak bergantung pada siklus hidup dan pelepasan memori dari aplikasi yang diminimalkan.





Ide

Idenya datang dari sebuah masalah. Masalahnya muncul dari kebencian.





, , , .

, , .

, -, , , . "" . ?

. , , , : , , .



...





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



, .





Tujuan dari pustaka ini adalah untuk menyederhanakan pengembangan dan melepaskan pengembang dari penulisan kode, asalkan ia bekerja dengan pelestarian status aplikasi. Kami juga berhasil membersihkan kode dari semua variabel ini yang perlu disimpan. Selain itu, sekarang mereka secara logis dipisahkan dari massa umum dan tidak mengacaukan kode, yang terlihat cukup bagus. Namun, untuk saat ini, ini hanya berfungsi di MVVM dari Google.







Tautan Repositori GitHub UnkillableSavedState








All Articles