Я пытаюсь выяснить, как наилучшим образом закончить Activity из ViewModel. Я нашел один способ сделать это, используя объект LiveData и испустив "сигнал".
У меня есть сомнения, что это решение имеет накладные расходы. Так это правильное решение, или я должен использовать более точные данные?
Итак, переходим к примеру: пусть предположим, что в приложении есть активность MainActivity и вид, как показано ниже:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val model = ViewModelProviders.of(this).get(MainViewModel::class.java)
model.shouldCloseLiveData.observe(this, Observer { finish() })
}
}
и как компаньон для MainActivity - это MainViewModel, как показано ниже:
class MainViewModel(app: Application) : AndroidViewModel(app) {
val shouldCloseLiveData = MutableLiveData<Void>()
fun someAction(){
shouldCloseLiveData.postValue(null)
}
}