Во-первых, я новичок в LiveData. Я нашел это на официальном сайте Android.
An exception to this behavior is that observers also receive an update when they change from an inactive to an active state. Furthermore, if the observer changes from inactive to active a second time, it only receives an update if the value has changed since the last time it became active.
Я хочу знать, как определить состояние.
public void doLogin(View view){
final LiveData<Pojo> liveData = loginViewModel.checkLoginAndgetUserData(email.getText().toString(),password.getText().toString());
liveData.observe(LoginActivity.this, new Observer<Pojo>() {
@Override
public void onChanged(@Nullable Pojo pojo) {
Boolean isValid = loginViewModel.isValid(pojo);
if (isValid){
Toast.makeText(LoginActivity.this, "Success", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(LoginActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
});
}
Вот мой код. Если пользователи в первый раз не смогли войти в систему и попытаются войти снова, в этот раз вызов метода onChanged без изменения данных. В этот раз тост появляется снова. Через некоторое время Когда сетевой вызов завершится, снова onChanged вызов метода.
Было озеро моих знаний о живых данных. Теперь я ясно, чем раньше. Спасибо.
LiveData становится неактивным, если у него нет активных наблюдателей. Это означает, что если LifecycleOwner становится
stopped, то он отображается какinactive. Таким образом, приложение, переведенное в фоновый режим, делает наблюдателей неактивными.