主页 > 电脑硬件  > 

Android创建一个全局通用的ViewModel

Android创建一个全局通用的ViewModel
(推荐)使用ViewModelStore

代码示例:

class MyApplication : Application(), ViewModelStoreOwner { private val mViewModelStore = ViewModelStore() override fun onCreate() { super.onCreate() } override val viewModelStore: ViewModelStore get() = mViewModelStore /** * 手动清理 ViewModelStore */ fun clearViewModelStore() { mViewModelStore.clear() } }

ShareViewModel:

class SharedViewModel: ViewModel() { val mShareData = MutableLiveData<String>() }

ActivityA & ActivityB

class MainActivity : AppCompatActivity() { private val TAG = "MainActivity" private lateinit var mShareViewMode: SharedViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) mShareViewMode = ViewModelProvider(application as MyApplication)[SharedViewModel::class.java] val tvTest = findViewById<TextView>(R.id.tvTest) tvTest.setOnClickListener { mShareViewMode.mShareData.value = "我是MainActivity更新的数据" startActivity(Intent(this,BActivity::class.java)) } mShareViewMode.mShareData.observe(this){ Log.i(TAG, "MainActivity shareData:$it") } } } class BActivity : AppCompatActivity() { private val TAG = "BActivity" private lateinit var mShareViewMode: SharedViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_bactivity) // 这里传入MyApplication的 mShareViewMode = ViewModelProvider(application as MyApplication)[SharedViewModel::class.java] mShareViewMode.mShareData.observe(this) { Log.e(TAG, "BActivity onCreate shareData:$it") } } }

标签:

Android创建一个全局通用的ViewModel由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Android创建一个全局通用的ViewModel