如何解决LiveData Observer onChnaged在活动上被称为两次安卓
我在活动中使用实时日期观察器。当我启动活动的首次观察者onChanged()时,像往常一样仅调用一次。但是当我按回并关闭活动,然后再次启动活动时 观察者onChanged()被调用了两次。之后,每次我重复这些步骤时,它就会触发两次。
这是活动代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocLangQualViewModel = new ViewModelProvider(this).get(LocLangQualViewModel.class);
mActivityLocLangQualSetupBinding =
DataBindingUtil.setContentView(this,R.layout.activity_loc_lang_qual_setup);
mActivityLocLangQualSetupBinding.rvLanguages.setAdapter(mSelectedLanguageAdapter);
mActivityLocLangQualSetupBinding.rvLanguages.setLayoutManager(new
LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
mLocLangQualViewModel.getAllLangsofUser().observe(this,new Observer<ArrayList<LanguageModel>>()
{
@Override
public void onChanged(ArrayList<LanguageModel> languageModels) {
if (languageModels!=null){
Log.d("Observer","Called");
mSelectedLanguageAdapter = new SelectedLanguageAdapter(languageModels);
mActivityLocLangQualSetupBinding.rvLanguages.setAdapter(mSelectedLanguageAdapter);
}
}
});
我确保getAllLangsofUser()函数被调用一次。.所以只有观察者的onchanged()被调用两次。
ViewModelCode:
public class LocLangQualViewModel extends ViewModel {
private LocLangQualSetupRepo mLocLangQualSetupRepo= LocLangQualSetupRepo.getInstance();
private MutableLiveData<ArrayList<LanguageModel>> langListLiveData;
public MutableLiveData<ArrayList<LanguageModel>> getAllLangsofUser(){
Log.d("ViewModel","Method Called");
if (langListLiveData==null){
langListLiveData = mLocLangQualSetupRepo.getAllLangsOfUser();
}
return langListLiveData;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。