Примечание: сразу уточню, что ViewModel — это не замена onSaveInstanceState(Bundle)
Ниже код ViewModel
package ag.krasnov.exampleviewmodel; import android.util.Log; import androidx.lifecycle.ViewModel; public class MyViewModel extends ViewModel { private int mCount; public int getCount() { return mCount; } public void increment() { mCount++; } }
Код Activity
package ag.krasnov.exampleviewmodel; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private MyViewModel viewModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(Constants.TAG, "активити onCreate"); viewModel = new ViewModelProvider(this).get(MyViewModel.class); viewModel.increment(); } ... @Override protected void onResume() { super.onResume(); Log.d(Constants.TAG, "активити onResume(" + viewModel.getCount() + ")"); } ...
ViewModel не будет уничтожен до вызова в Activity onDestroy()
Если одну и туже ViewModel добавить вызывать в разных Activity, то она будет своя для каждого экземпляра экрана.