Примечание: сразу уточню, что 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, то она будет своя для каждого экземпляра экрана.