アイデアがありました。重要な変数のグループを1つの場所に集めて、一緒になってより多くのものになるようにします。また、必要に応じて、最小化されたアプリケーションのライフサイクルやメモリリリースに依存しない値がプログラマーに必要な場合に使用できます。
考え
その考えは問題から生まれました。問題は恨みから生じた。
, , , .
, , .
, -, , , . "" . ?
. , , , : , , .
...
? , : 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)
}
, .
このライブラリの目的は、開発を簡素化し、開発者がアプリケーションの状態を保持することを条件として、コードの記述から開発者を解放することです。また、保存する必要のあるこれらすべての変数からコードをクリーンアップすることもできました。さらに、これらは一般的な質量から論理的に分離されており、コードが乱雑にならないようになっています。これは非常に見栄えがします。しかし、のために今、それだけでGoogleからのMVVMで動作します。
UnkillableSavedState GitHubのリポジトリのリンク