ViewModel和OnNewIntent

时间:2018-10-27 16:39:24

标签: android viewmodel android-jetpack

假设我有一个使用ViewModel Architecture Component的应用程序。 如果我有两个活动:商品目录和详细信息,并且该详细信息活动与商品ID相关联。如果使用新ID(即通过深层链接)重新创建了明细活动,该怎么办?

现在,我的viewModel是使用绑定到详细信息页面的ID创建的。但是,如果onNewIntent方法中的id更改,则应丢弃旧的视图模型,并用新的视图模型替换。

这似乎与视图模型的目的矛盾,除非我将其依赖于ID的出发点是错误的。

如果我重新初始化viewModel变量,旧的变量会自动丢弃吗?我的代码正确:

    private lateinit var viewModel: DetailsViewModel

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(....

    viewModel = ViewModelProviders.of(this, InjectorUtils.provide    private lateinit var viewModel: ProvideDetailsViewModelFactory(applicationContext, detailsID!!)).get(    private lateinit var viewModel: DetailsViewModel::class.java)
    subscribeUi()
}

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    val appLinkData = intent.data
    if (appLinkData != null) {
        val newDetailsId = appLinkData.lastPathSegment
        if (newDetailsId !== detailsID) {
            detailsID = newDetailsId
            //at this point my view model is not valid anymore
        }
    }
}

0 个答案:

没有答案