
本文共 3852 字,大约阅读时间需要 12 分钟。
Android ViewModel���������������������������������������������
���Android������������ViewModel���������VM���������������������������������������������������������������������������������������������������������������������������������Activity���Fragment������������������������architecture���������������������������������������������������������������������������������������������������������������������������
ViewModel���������������
ViewModel���������������������UI���������������������������������������������������ViewModel
������������������������ViewModelProvider
������������������������Activity���Fragment���������ViewModel������������������������������������������Activity���Fragment������������������������Complex���������
ViewModel���Activity���������������������
���������ViewModel������������������Activity������������������������Material Design������������������ViewModel���������������������Activity������������������������onDestroy()���������������������������������ViewModel��������� tagged for cleanup���������������������ViewModel������������������������������������������
������������
��������������� ���������������������������������������ViewModel
������������������������������������������build.gradle
������������������
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
������ViewModel��� ���������������ViewModel���������������ViewModel
������������������������������
class MyViewModel : ViewModel() { override fun onCleared() { super.onCleared() // ��������������������������������������������������������������������� }}
ViewModel��������������������� ������ViewModel������������������Activity������������������������������������������������������������������������������������������������������ViewModel���������������ViewModelStore
������������������ViewModel���������
ViewModelProvider���ViewModelStore
ViewModelProvider
���������ViewModel������������������������������������������������������������������������������������������������������������ViewModel���������
val viewModelProvider: ViewModelProvider = ...val myViewModel: MyViewModel by viewModelProvider.get(MyViewModel::class.java)
���ViewModelStore
������ViewModel������������������������������������������������������������������������������
// ���ViewModel���������������������������private final HashMapmMap = ...fun put(key: String, viewModel: ViewModel) { this@ViewModelStore.mMap.put(key, viewModel) // ���������������������������ViewModel������������ if (mMap.containsKey(key)) { val oldViewModel = mMap[key] oldViewModel.onCleared() }}fun get(key: String): ViewModel { return mMap.get(key) ?: throw exception}
������������
-
������������Context������ ViewModel���������������Activity���Fragment���Context������������������������������������������������������Context������������������������������������
- ������
AndroidViewModel
������������������������AppCompatActivity��������������� - ���������������Context���ViewModel���������������������Context������������������������������������������������
-
��������������������������� ������ViewModel���������������������������������������
onSaveInstanceState()
���������������������������������������������������onSaveInstanceState()
������������������Activity���������������������������������������������������������- ViewModel������������������������������������������������������������ViewModel������������������
���������������
������������ViewModel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ����
发表评论
最新留言
关于作者
