ViewModel VS Static / Object

Пытаюсь найти фундаментальную разницу между ViewModel и Static(java) или Object(kotlin).
Основной аргумент, который я вижу в статьях, это то, что ViewModel переживает поворот Activity.
Но ведь тоже самое делают и статичные методы и объекты?
И LiveData ведет в статичных местах себя как и во ViewModel.
Зачем придумывать что-то новое, когда в языке уже есть велосипед?

К тому же ViewModel отлично работает только во фрагментах при общей Активити. Если надо обратиться к одной модели из разных Активити - надо немного потанцевать с бубном, чтобы верно указать владельца. У статиков такой проблемы нет.

ViewModel

class MyVM : ViewModel() {
  var a: String = "Hello!"
}


//////////////////////
class MainActivity : AppCompatActivity() {

    lateinit var vm: MyVM


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

        vm = ViewModelProvider(this).get(MyVM::class.java)

        textView.settext(vm.a.value)
}

Object / Static

object VM{
    var a: String = "Hello!"
}


//////////////////////
class MainActivity : AppCompatActivity() {  

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

        textView.settext(VM.a)
}

Ответы (1 шт):

Автор решения: IR42

ViewModel привязывается к активити или фрагменту и переживает их смену конфигурации, но это не означает, что она живёт вечно, как статик или object. При полном уничтожении активити или фрагмента (выход из экрана) ViewModel уничтожается вместе с ними, освобождая занятые ресурсы. https://developer.android.com/topic/libraries/architecture/viewmodel#lifecycle

→ Ссылка