人生の変数のための闘争。または、Android開発者の生活を楽にしようとした方法

アイデアがありました。重要な変数のグループを1つの場所に集めて、一緒になってより多くのものになるようにします。また、必要に応じて、最小化されたアプリケーションのライフサイクルやメモリリリースに依存しない値がプログラマーに必要な場合に使用できます。





考え

その考えは問題から生まれました。問題は恨みから生じた。





, , , .

, , .

, -, , , . "" . ?

. , , , : , , .



...





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



, .





このライブラリの目的は、開発を簡素化し、開発者がアプリケーションの状態を保持することを条件として、コードの記述から開発者を解放することです。また、保存する必要のあるこれらすべての変数からコードをクリーンアップすることもできました。さらに、これらは一般的な質量から論理的に分離されており、コードが乱雑にならないようになっています。これは非常に見栄えがします。しかし、のために今、それだけでGoogleからのMVVMで動作します。







UnkillableSavedState GitHubのリポジトリのリンク








All Articles