Jetpack系列——ViewModel
发布日期:2021-05-14 19:19:42 浏览次数:16 分类:精选文章

本文共 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 HashMap
    mMap = ...
    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������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ����

    上一篇:阿里辞退35岁程序员,只因年龄太大?其实背后原因在自己身上
    下一篇:迟来的面试通知,开启了我去华为的面试之旅(Android开发岗)

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年05月01日 21时25分55秒