ViewModel в Java

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

Print Friendly, PDF & Email

Добавить комментарий