Android Studio 之 ViewModel (转)

笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Android Studio 之 ViewModel (转)相关的知识,希望能为你提供帮助。
ViewModel  是 JetPack  类库中的一个功能,可以保存控件的状态 ,在整个Activity  生命周期中,状态不会失效
如屏幕翻转时,状态可保留,不会失效!
与 LiveData  配合使用!
配合 Room 进行 Sqlite  操作数据库
 

Android Studio 之 ViewModel (转)

文章图片

 
 
新建 ViewModel  类,在MainActivity类的父结点上右击,点创建java类
注意:Superclass  中要选 ViewModel
Android Studio 之 ViewModel (转)

文章图片

 
 
1. ViewModel  类中放一个public  的整数变量
Android Studio 之 ViewModel (转)

文章图片

 
 

2.  在MainActivity类中创建一个 MyViewModel  实例,
注意:ViewModelProviders  这个对象,需要在 build.gradle中的  dependencies 结点中, 添加引用    implementation ‘androidx.lifecycle:lifecycle-extensions:2.1.0‘
【Android Studio 之 ViewModel (转)】 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 package  com.example.viewmodel1;   import  android.os.Bundle; import  android.view.View; import  android.widget.Button; import  android.widget.TextView;   import  androidx.appcompat.app.AppCompatActivity; import  androidx.lifecycle.ViewModelProviders;   public  class  MainActivity  extends  AppCompatActivity {           MyViewModole myViewModole;         TextView textView;         Button button1;         Button button2;           String TAG =  "myTag";           @Override         protected  void  onCreate(Bundle savedInstanceState) {                 super.onCreate(savedInstanceState);                 setContentView(R.layout.activity_main);                   button1 = findViewById(R.id.button);                 button2 = findViewById(R.id.button2);                 textView = findViewById(R.id.textView);                     myViewModole = ViewModelProviders.of(this).get(MyViewModole.class);     //实例化                          textView.setText(String.valueOf(myViewModole.numberAnInt)); //初始时,给它赋值                   button1.setOnClickListener(new  View.OnClickListener() {                         @Override                         public  void  onClick(View view) {                                 myViewModole.numberAnInt++;                                 textView.setText(String.valueOf(myViewModole.numberAnInt));                         }                 });                 button2.setOnClickListener(new  View.OnClickListener() {                         @Override                         public  void  onClick(View view) {                                 myViewModole.numberAnInt +=  2;                                 textView.setText(String.valueOf(myViewModole.numberAnInt));                         }                 });         } }

    推荐阅读