ViewModel и OnNewIntent - PullRequest
       10

ViewModel и OnNewIntent

0 голосов
/ 27 октября 2018

Допустим, у меня есть приложение, использующее компонент архитектуры ViewModel. Если у меня есть два действия: каталог и подробности, и что действие подробно связано с идентификатором элемента. Как мне поступить, если подробное действие воссоздается с новым идентификатором (т. Е. Через глубокое связывание).

Прямо сейчас мой viewModel создан с использованием идентификатора, привязанного к странице сведений. Однако, если этот идентификатор изменяется в методе onNewIntent, старая модель представления должна быть отброшена и заменена новой.

Это кажется противоречивым с целью модели представления, если только моя отправная точка, когда она зависит от 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
        }
    }
}
...