行业知识
DataBinding+ViewModel+LiveData MVVM
2026-11-13 03:41:09
来源:互联网转载
Activity
package com.tiger.databinding7;import androidx.appcompat.app.AppCompatActivity;import androidx.databinding.DataBindingUtil;import androidx.databinding.ViewDataBinding;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModelProvider;import android.os.Bundle;import com.tiger.databinding7.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class); activityMainBinding.setViewModel(myViewModel); activityMainBinding.setLifecycleOwner(this); }} viewModel
package com.tiger.databinding7;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModel;public class MyViewModel extends ViewModel { private MutableLiveData aTeamScore; private MutableLiveData bTeamScore; private Integer aLast; private Integer bLast; //因为并发量不大,所以线程安全,就算多创建了 对象, 没有被引用也会被垃圾回收的 ,不会造成内存泄漏 public MutableLiveData getaTeamScore() { //网络要在后台线程去执行不会阻塞主线程,用数据绑定来更新UI if (aTeamScore == null){ aTeamScore = new MutableLiveData(); //在 UI线程 里 用 setValue //非UI 线程里用post aTeamScore.setValue(0); } return aTeamScore; } public MutableLiveData getbTeamScore() { if (bTeamScore == null){ bTeamScore = new MutableLiveData(); //在 UI线程 里 用 setValue //非UI 线程里用post bTeamScore.setValue(0); } return bTeamScore; } public void aTeamAdd(int i){ saveLastScore(); aTeamScore.setValue(aTeamScore.getValue()+i); } public void bTeamAdd(int i){ saveLastScore(); bTeamScore.setValue(bTeamScore.getValue()+i); } public void undo(){ aTeamScore.setValue(aLast); bTeamScore.setValue(bLast); } public void reset(){ aTeamScore.setValue(0); bTeamScore.setValue(0); } //记录上一次的分数 private void saveLastScore(){ this.aLast = aTeamScore.getValue(); this.bLast = bTeamScore.getValue(); }} 上一篇:socket怎么退出服务器?